作为我正在研究的CNN的输入,我想使用一系列图像(在转换层中使用3D卷积)。
但是,我已经无法将图像读取为可以用于计算的3D张量。
这是我的原始尝试:
def get_sequence_as_tensor(folder):
images = [folder + "/depth-%i.png" for i in range(15)]
tensor = tf.zeros(shape=(480, 640, 15), dtype=tf.float32)
for i, image in enumerate(images):
img = tf.image.decode_png(image)
img_float = tf.cast(img, tf.float32)
img_float = tf.reshape(img_float, (480, 640))
tensor[:, :, i] = img_float
return tensor
哪个已经失败,因为我无法使用带有张量的索引表示法,正如我对numpy数组所期望的那样。
TypeError: 'Tensor' object does not support item assignment
在一系列图像中读取3d张量的正确方法是什么?
答案 0 :(得分:0)
我建议将图像组合成张量流之外的numpy数组,然后将它们传递给占位符。
这样的事情应该有效。
filename = tf.placeholder("string")
png_string = tf.read_file(filename)
img = tf.image.decode_png(png_string)
img_float = tf.cast(img, tf.float32)
img_float = tf.reshape(img_float, (480, 640))
images = tf.placeholder("float", (480, 640, 15))
output = some_operation(images)
sess = tf.Session()
images_array = np.zeros((480, 640, 15), np.float32)
for i, image in enumerate(filenames):
images_array[:,:,i] = sess.run(img_float, feed_dict{filename: image})
out = sess.run(output, feed_dict={images: images_array})
我希望这会有所帮助。