【发布时间】: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