具有3个通道图像的卷积层

时间:2017-06-12 06:57:18

标签: python computer-vision deep-learning keras

我想使用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)

如何处理3频道图像?

1 个答案:

答案 0 :(得分:0)

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