在 keras 中使用反向传播调整输入特征

alg*_*eer 5 backpropagation deep-learning keras

我正在尝试按照 Keras 中的建议实现判别条件代码

薛少飞等人,“基于判别码的深度神经网络快速适应语音识别”。

主要思想是将每个条件编码为输入参数,并让网络学习条件和特征标签映射之间的依赖关系。在新的数据集上,您只需使用反向传播调整这些权重,而不是调整整个网络。例如,假设我的网络如下所示

          X ---->|----|
                 |DNN |----> Y
          Z --- >|----|
Run Code Online (Sandbox Code Playgroud)

X:特征Y:标签Z:条件代码

现在,给定一个预训练的 DNN,并且X'Y'一个新数据集上,我尝试估计Z'使用反向传播,这将最大限度地减少 的预测误差Y'。数学看起来很简单,但我不确定如何在无法访问反向传播本身的情况下在 keras 中实现这一点。

例如,我可以添加一个带有 trainable=True 的 Input() 层,并将所有其他层设置为 trainable=False。keras 中的反向传播可以更新的不仅仅是层权重吗?或者有没有办法破解 keras 层来做到这一点?

欢迎任何建议。谢谢

Par*_*kar 0

假设 的大小Zm x n。然后你可以先定义一个大小为 的输入层m * n x 1。输入将是一个m * n x 1向量。您可以定义一个包含m * n神经元的密集层并trainable = True为其设置。该层的响应将为您提供一个扁平化版本的Z. 适当地重塑它,并将其作为网络其余部分的输入,可以附加在这之前。

请记住,如果 的大小Z太大,则网络可能无法学习那么多神经元的密集层。在这种情况下,也许您需要施加额外的约束或研究卷积层。然而,卷积层会对 施加一些限制Z