为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2021-12-21 17:04:30
我正在处理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],但我想坚持使用它而不是试图解决它。问题如何重塑我的训练数据以匹配预期的占位符维度?
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

在 numpy 中:


您可以使用np.newaxis,np.expand_dims和reshape()添加维度。


import numpy as np


train_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 tf


train_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)


查看完整回答
反对 回复 2021-12-21
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信