我想使用Keras-rl库(https://github.com/matthiasplappert/keras-rl/blob/master/examples/dqn_atari.py)中的DQN代码和3通道图像(无灰度转换)。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')
我更改网络achitecture:
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: Error when checking : expected permute_1_input to have 4 dimensions, but got array with shape (1, 1, 200, 200, 3)
如何处理3通道图像?
用来训练模型的图像阵列的形状是什么? –
图像的形状是(84,84,3) –
这是不可能的,因为您的input_Shape是(200,200,3)。因此,你的图像数组的输入应该是(x,200,200,3)。 x代表图像的数量。 –