如何正确批处理图像的张量流数据集形状
How to correctly batch a tensorflow dataset shape of images
我正在尝试从张量数据集创建批处理数据集,但在形状方面遇到了问题。
我看到了一些 references to enqueue 但已经过时了几年,而且 tf.dataset.batch 没有任何选项。我的数据集如下所示:
X_test1 = tensorflow.data.Dataset.from_tensors((X_test_images, X_test_labels))
<TensorDataset shapes: ((5512, 256, 256, 3), (5512,)), types: (tf.float32, tf.int32)>
这是 256 x 256 的图像阵列,具有 3 个颜色通道和一个用于 5512 个图像/标签的标签向量。
但是当我尝试对其进行批处理时,它创建了一个新维度:
new = X_test1.batch(32)
<BatchDataset shapes: ((None, 5512, 256, 256, 3), (None, 5512)), types: (tf.float32, tf.int32)>
我真正想要的是:
<BatchDataset shapes: ((None, 256, 256, 3), (None,)), types: (tf.float32, tf.int32)>
其中 None 是第 32 批,最后一批可能还有一些剩余。
谢谢!!
您应该使用 from_tensor_slices:
初始化数据集
X_test1 = tf.data.Dataset.from_tensor_slices((X_test, y_test))
new = X_test1.batch(32)
我正在尝试从张量数据集创建批处理数据集,但在形状方面遇到了问题。 我看到了一些 references to enqueue 但已经过时了几年,而且 tf.dataset.batch 没有任何选项。我的数据集如下所示:
X_test1 = tensorflow.data.Dataset.from_tensors((X_test_images, X_test_labels))
<TensorDataset shapes: ((5512, 256, 256, 3), (5512,)), types: (tf.float32, tf.int32)>
这是 256 x 256 的图像阵列,具有 3 个颜色通道和一个用于 5512 个图像/标签的标签向量。
但是当我尝试对其进行批处理时,它创建了一个新维度:
new = X_test1.batch(32)
<BatchDataset shapes: ((None, 5512, 256, 256, 3), (None, 5512)), types: (tf.float32, tf.int32)>
我真正想要的是:
<BatchDataset shapes: ((None, 256, 256, 3), (None,)), types: (tf.float32, tf.int32)>
其中 None 是第 32 批,最后一批可能还有一些剩余。
谢谢!!
您应该使用 from_tensor_slices:
初始化数据集X_test1 = tf.data.Dataset.from_tensor_slices((X_test, y_test))
new = X_test1.batch(32)