猿问

将图像数据输入到 tensorflow 占位符

我正在处理keras.datasets.fashion_mnist包含 28 x 28 灰度图像的数据集。我构建了一个非常简单的卷积神经网络,它接受定义为的图像占位符:

X = tf.placeholder(tf.float32, [None, 28, 28, INPUT_CHANNELS], name='X_placeholder')

我从<type 'numpy.ndarray'>形状开始(100, 28, 28)。此处的 100 表示我选择用于训练的批量大小。

显然,维数在这里不对齐。我构建的图形也应该适用于 RGB 图像,因此是 INPUT_CHANNEL 维度。正如预期的那样,当我尝试训练时,出现以下错误:

ValueError: Cannot feed value of shape (100, 28, 28) for Tensor u'X_placeholder:0', which has shape '(?, 28, 28, 1)'

作为 TF 和 numpy 的新手,我不知道如何添加额外的维度。从各种来源拼凑出我的代码后,我不能说我选择了占位符输入形状[None, 28, 28, INPUT_CHANNELS],但我想坚持使用它而不是试图解决它。

问题

如何重塑我的训练数据以匹配预期的占位符维度?


不负相思意
浏览 117回答 1
1回答

暮色呼如

在 numpy 中:您可以使用np.newaxis,np.expand_dims和reshape()添加维度。import numpy as nptrain_data = np.random.normal(size=(100,28,28))print(train_data.shape)new_a = train_data[...,np.newaxis]print(new_a.shape)new_a = np.expand_dims(train_data,axis=-1)print(new_a.shape)new_a = train_data.reshape(100,28,28,1)print(new_a.shape)(100, 28, 28)(100, 28, 28, 1)(100, 28, 28, 1)(100, 28, 28, 1)在张量流中:您可以使用tf.newaxis,tf.expand_dims和tf.reshape添加维度。import tensorflow as tftrain_data = tf.placeholder(shape=(None,28,28),dtype=tf.float64)print(train_data.shape)new_a = train_data[...,tf.newaxis]print(new_a.shape)new_a = tf.reshape(train_data,shape=(-1,28,28,1))print(new_a.shape)new_a = tf.expand_dims(train_data,axis=-1)print(new_a.shape)(?, 28, 28)(?, 28, 28, 1)(?, 28, 28, 1)(?, 28, 28, 1)
随时随地看视频慕课网APP

相关分类

Python
我要回答