在keras中连接两个LSTM单元的另一种方法(CRNN模型)

时间:2019-02-20 21:17:44

标签: keras deep-learning ocr lstm coremltools

所以我正在研究CRNN模型。这是OCR的模型。 This是我正在处理的链接。 这是模型构建的零件代码:

x_reshape = Reshape(target_shape=(int(bn_shape[1]), int(bn_shape[2] * bn_shape[3])))(batchnorm_7)

fc_1 = Dense(128, activation='relu')(x_reshape)  # (?, 50, 128)
rnn_1 = LSTM(128, kernel_initializer="he_normal", return_sequences=True)(fc_1)
rnn_1b = LSTM(128, kernel_initializer="he_normal", go_backwards=True, return_sequences=True)(fc_1)
rnn1_merged = add([rnn_1, rnn_1b])

rnn_2 = LSTM(128, kernel_initializer="he_normal", return_sequences=True)(rnn1_merged)
rnn_2b = LSTM(128, kernel_initializer="he_normal", go_backwards=True, return_sequences=True)(rnn1_merged)
rnn2_merged = concatenate([rnn_2, rnn_2b])

drop_1 = Dropout(0.25)(rnn2_merged)

fc_2 = Dense(label_classes, kernel_initializer='he_normal', activation='softmax')(drop_1)

# model setting
base_model = Model(inputs=inputShape, outputs=fc_2)  # the model for prediecting

(我没有包括整体,因为我只是想了解模型的样子) 所以在这里一行: rnn2_merged = concatenate([rnn_2, rnn_2b]) 它正在串联两个单元格。

我想知道是否有其他方法可以在不使用keras中使用Concatenate的情况下将它们串联起来?

(我在将此模型转换为CoreML时遇到问题,它在串联中引发错误Only channel and sequence concatenation are supported.,而CoreML不支持该错误。这就是为什么我想以其他方式实现它)。

我已经阅读了几篇关于这方面的论文 this。他们解释说,在coreMl级联中只能在预定的维度上完成!

感谢任何投入。

0 个答案:

没有答案