Я пытаюсь запустить модель с приложением conv2d в конце gru. Gru вернет все последовательности, что означает, что вывод gru должен быть партией из 28 * 28 матриц. Затем я хочу ввести их в conv2d, так как conv2d нужен 4d-тензор, я изменяю тензор в слое, но появляется ошибка.
Так что я думаю, что есть некоторые проблемы со слоем изменения формы, но поиск в сети, кажется, не удовлетворен. Может кто-нибудь дать несколько советов, большое спасибо.
def build_model(input_shape, num_classes):
x = Input(input_shape)
x = Embedding(10000, 64, input_length=28)(x)
forw = GRU(14, return_sequences=True)(x)
back = GRU(14, return_sequences=True, go_backwards=True)(x)
y = Concatenate(-1)([forw, back])
y = Reshape((None,28,28,1))(y)
y = Conv2D(32, (3, 3), activation='relu')(y)
y = MaxPooling2D((2,2))(y)
y = Conv2D(64, (3, 3), activation='relu')(y)
y = MaxPooling2D((2,2))(y)
y = Flatten()(y)
y = Dense(num_classes, activation='softmax')(y)
return Model(x,y)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 401, in call
return K.reshape(inputs, (K.shape(inputs)[0],) + self.target_shape)
File "/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py", line 1969, in reshape
return tf.reshape(x, shape)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 7179, in reshape
"Reshape", tensor=tensor, shape=shape, name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 529, in _apply_op_helper
(input_name, err))
ValueError: Tried to convert 'shape' to a tensor and failed. Error: None values not supported.