【问题标题】:Convolutional layers with 3 channels image具有 3 通道图像的卷积层
【发布时间】:2017-06-12 06:57:17
【问题描述】:

我想将 Keras-rl 库 (https://github.com/matthiasplappert/keras-rl/blob/master/examples/dqn_atari.py) 中的 DQN 代码用于 3 通道图像(无灰度转换)。

如何更改代码来做到这一点?我试图删除这一行:img = img.resize(INPUT_SHAPE).convert('L') # resize and convert to grayscale 但我有尺寸错误..

我添加了from keras import backend as K K.set_image_dim_ordering('th') 我改变了网络架构:

model = Sequential()
model.add(Permute((3, 1, 2),input_shape=(200,200,3)))
model.add(Lambda(lambda a: a / 255.0))
model.add(Conv2D(32, (8, 8), strides=(2, 2), activation=activation))
model.add(Conv2D(32, (4, 4), strides=(2, 2), activation=activation))
model.add(Conv2D(32, (3, 3), strides=(2, 2), activation=activation))
model.add(Conv2D(32, (2, 2), strides=(1, 1), activation=activation))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(128))
for i in xrange(nb_layers):
    model.add(Dense(hidden_size, activation=activation))
model.add(Dense(env.action_space.n + 1))
model.add(Lambda(lambda a: K.expand_dims(a[:, 0], axis=-1) + a[:, 1:], output_shape=(env.action_space.n,)))
print(model.summary())

但在运行时:

ValueError: 检查时出错:预期 permute_1_input 有 4 个维度,但得到的数组形状为 (1, 1, 200, 200, 3)

如何处理三通道图像?

【问题讨论】:

  • 用于训练模型的图像数组的形状是什么?
  • 图片的形状是(84,84,3)
  • 这是不可能的,因为您的 input_Shape 是 (200,200,3)。因此,图像数组的输入应该是 (x, 200, 200, 3)。 x 代表图像的数量。
  • 对不起,我错了,图像形状是(200,200,3)。我不知道为什么输入是 (1, 1, 200, 200, 3) ,应该是 (x , 200, 200, 3)。可能是图书馆的问题
  • 您能否添加有关如何在 python 中加载图像以及如何为模型准备它们的代码?

标签: python computer-vision deep-learning keras


【解决方案1】:

我在发布的代码中没有看到任何错误,但我的猜测是,当您删除 resize 行时,您不小心在初始化图像数组的前一行的末尾添加了 ,。 Python 会将img = abc(), 解析为img = (abc(),)。该错误与您的 5 维形状相符。

【讨论】:

    猜你喜欢
    • 2018-04-07
    • 2015-11-18
    • 2016-09-02
    • 1970-01-01
    • 2023-03-17
    • 2022-01-20
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多