tf.nn.conv2d(input,filter,[1, 1, 1, 1])要求input是一个四维张量(即 batch,heigh,width,chanel),但由于数据是由如下代码得到的:
training_dataset = dataset.batch(n_batch).prefetch(64) # n_batch=64
training_iterator = training_dataset.make_one_shot_iterator()
training_batch = training_iterator.get_next() # (?,64,64,3)dtype=tf.float32
此时的张量training_batch的shape为(?,64,64,3),接下来我想对training_batch使用卷积操作,但他的batch维是“?”无法使用tf.nn.conv2d()。
请问这个问题应该如何解决?
在使用TensorFlow时,由于训练数据张量training_batch的batch维度为'?',导致无法直接应用tf.nn.conv2d进行卷积。要解决此问题,可以使用tf.data.Dataset的`repeat()`和`enumerate()`方法来设置固定的batch大小,从而确保张量的形状。首先,使用`repeat()`无限循环数据集,然后用`enumerate()`获取每个batch的索引,通过索引将数据集转换为固定大小的批次。这样,training_batch的形状将变为(64, 64, 64, 3),可以进行卷积操作。
833

被折叠的 条评论
为什么被折叠?



