【发布时间】:2018-11-13 09:00:45
【问题描述】:
我将使用 tf.keras 和 MNIST 手写数字数据集制作一些 GAN 模型测试器。因为我的模型将用于 128x128 的图像,所以我将 MNIST 数据集的大小调整为 128x128x1。但是,程序出现了一些我从未见过的错误。
(x_train, _), (_, _) = mnist.load_data()
x_train = (x_train.astype(np.float32) - 127.5) / 127.5
x_train = tf.image.resize_images(x_train, [128, 128])
idx = np.random.randint(0, x_train.shape[0], batch_size) # picks some data, count is batch_size=32.
imgs = x_train[idx] # This line made errors
最后一行犯了两个错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError:形状必须为 1 级,但对于 'strided_slice_1'(操作:'StridedSlice')为 2 级,输入形状:[60000,128,128,1],[1,32] , [1,32], [1].
和,
ValueError:形状必须为 1 级,但对于 'strided_slice_1'(操作:'StridedSlice')为 2 级,输入形状为:[60000,128,128,1]、[1,32]、[1,32]、[ 1]。
我认为数字 '32' 表示 batch_size(=32)。
我试图找到有关此错误的信息,但找不到类似此错误的信息。
我没有任何想法来解决这个问题(因为我一周前开始使用 keras,在我使用 pytorch 之前)。
【问题讨论】:
-
什么是(1,32),32不是batch size吗?请打印(idx)。
-
idx 是具有随机整数值的 batch_size 大小的列表。它用于提取 32 个随机 MNIST 数据。 example: [35904 26046 21148 28562 56414 31930 44948 53721 2118 30226 6292 57618 39161 46354 9053 46421 44620 36931 8266 48759 42023 40365 33027 13278 57609 3804 57904 4377 3517 30322 16445 47825]
-
我认为如果您打印它,您的 idx 将是错误消息中的形状 (1,32),这就是我要求您打印它的原因。
-
print(idx)的结果就是上面的例子,所以我打印了idx.shape:(32,)。
-
you write: imgs = x_train[idx] # 这行出错了,不是 print(idx)
标签: python tensorflow keras neural-network generative-adversarial-network