我是张量流的新手。我打算通过使用tf.reshape将张量的形状(28,28,1)压平成1-D张量,但是没有得到预期的结果。这是我使用的代码片段。
def input_pipeline(self, batch_size, num_epochs=None):
images_tensor = tf.convert_to_tensor(self.image_names, dtype=tf.string)
labels_tensor = tf.convert_to_tensor(self.labels, dtype=tf.int64)
input_queue = tf.train.slice_input_producer([images_tensor, labels_tensor], num_epochs=num_epochs)
labels = input_queue[1]
images_content = tf.read_file(input_queue[0])
images = tf.image.convert_image_dtype(tf.image.decode_png(images_content, channels=N_CHANNELS), tf.float32)
new_size = tf.constant([IMAGE_SIZE_CHN, IMAGE_SIZE_CHN], dtype=tf.int32)
images = tf.image.resize_images(images, new_size)
reshape_vec = tf.constant([-1], dtype=tf.int32)
print(images.get_shape())
tf.reshape(images, reshape_vec)
print(images.get_shape())
image_batch, label_batch = tf.train.shuffle_batch([images, labels], batch_size=batch_size, capacity=50000,
min_after_dequeue=10000)
return image_batch, label_batch
两个打印功能的结果都是(28,28,1)。谁可以帮我这个事?谢谢!
答案 0 :(得分:0)
reshape
返回一个新的张量,这是重新形成旧张量的结果。它不会改变原始张量。要修复,只需将重塑线更改为
images = tf.reshape(images, reshape_vec)
请注意,使用
可能更好/更清洁images = tf.reshape(images, (-1,))
而不是在一个单独的恒定张量中定义新形状,尽管这更像是个人偏好。