gpt4 book ai didi

python - 如何在 tensorflow 中将数据 reshape 为无?

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:23 26 4
gpt4 key购买 nike

我在训练期间使用 tensorflow 运行队列来提供我的数据:

X, Y = tf.train.batch(
[image, label],
batch_size=64
)

然而,X、Y 的强制形状为 [64, 32, 32,3] 和 [64, 10]。在评估期间,我想对整个测试集运行损失操作,其维度为:[10000, 32, 32, 3] 和 [10000, 10]。我会在 session.run() 中使用 feed_dict 属性来用我的值覆盖 X、Y,但是它们具有不兼容的形状。

我能否以某种方式指示 tensorflow 忘记第一维,即 reshape [64, 32, 32, 3] -> [None, 32, 32, 3]?或者我还有其他选择可以用另一个值替换 X,Y 吗?

整个数据集足够小以适合内存,因此我使用与 https://github.com/tensorflow/tensorflow/blob/r0.9/tensorflow/examples/how_tos/reading_data/fully_connected_preloaded.py 中类似的方法

最佳答案

这有点微妙:在 TensorFlow 术语中,您实际上并不想 reshape 张量(即改变每个维度中的元素数量),而是您希望 TensorFlow“忘记"一个特定的维度,以便提供一系列大小的值。

tf.placeholder_with_default() op 旨在支持这种情况。它需要一个默认输入,在您的情况下将是下一个训练批处理(形状为 [64, ...]);和一个形状,在您的情况下,它与输入的形状相同,第一个维度设置为 None。然后,您可以向此占位符提供任何批量大小的值。

这是您如何使用它的示例:

X_batch, Y_batch = tf.train.batch([image, label], batch_size=64)

# Alternatively, `X_shape = [None, 32, 32, 3]`
X_shape = tf.TensorShape([None]).concatenate(X_batch.get_shape()[1:])
# Alternatively, `Y_shape = [None, 10]`
Y_shape = tf.TensorShape([None]).concatenate(Y_batch.get_shape()[1:])

# Create tensors that can be fed with a less specific shape
# than `X_batch`, `Y_batch`.
X = tf.placeholder_with_default(X_batch, shape=X_shape)
Y = tf.placeholder_with_default(Y_batch, shape=Y_shape)

关于python - 如何在 tensorflow 中将数据 reshape 为无?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37703886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com