问题描述:
实现一个tensorflow操作,positions是一个index序列,按照positions的顺序,调用自定义的求和函数,求positions分第一个index对应的的shape的长宽之和,输出一个序列
代码实现:
import tensorflow as tf
# 假设 positions 是一个表示索引序列的张量
positions = tf.constant([0, 2, 1, 3])
# 假设 shapes 是一个包含多个形状信息的列表,每个元素是一个长宽的二元组
shapes = [(10, 20), (30, 40), (50, 60), (70, 80)]
# 根据 positions 中的索引顺序,取出 shapes 中对应索引的形状信息
selected_shapes = tf.gather(shapes, positions)
# 计算 selected_shapes 中每个形状的长宽之和
summed_sizes = tf.reduce_sum(selected_shapes, axis=1)
# 打印结果
with tf.Session() as sess:
result = sess.run(summed_sizes)
print(result)
问题2:
如何求上述代码中positions中第二个index对应的长宽之和呢?
代码实现:
import tensorflow as tf
# 假设 positions 是一个表示索引序列的张量
positions = tf.constant([0, 2, 1, 3])
# 假设 shapes 是一个包含多个形状信息的列表,每个元素是一个长宽的二元组
shapes = [(10, 20), (30, 40), (50, 60), (70, 80)]
# 定义一个自定义的求和函数
def custom_sum(input_tensor):
return tf.reduce_sum(input_tensor, axis=1)
# 获取 positions 中第二个索引对应的形状信息
selected_shape = tf.gather(shapes, positions[1])
# 调用自定义的求和函数,计算 selected_shape 的长宽之和
summed_size = custom_sum(selected_shape)
# 打印结果
with tf.Session() as sess:
result = sess.run(summed_size)
print(result)