当前位置:  开发笔记 > 人工智能 > 正文

将TensorFlow LSTM转换为synapticjs

如何解决《将TensorFlowLSTM转换为synapticjs》经验,为你挑选了1个好方法。

我正在努力实现已经过训练的TensorFlow基本LSTM和可以在浏览器中运行的javascript版本之间的接口.问题在于,在我读过的所有文献中,LSTM被建模为迷你网络(仅使用连接,节点和门),而TensorFlow似乎还有很多其他问题.

我有两个问题:

    TensorFlow模型能否轻松转换为更传统的神经网络结构?

    是否有一种实用的方法来映射TensorFlow为您提供的可训练变量?

我可以从TensorFlow中获取"可训练的变量",问题是它们似乎只有一个LSTM节点的偏差值,我看到的大多数模型都会包含几个存储单元的偏差,输入和输出.



1> Rafał Józefo..:

在内部,LSTMCell为了提高效率,该类将LSTM权重存储为一个大矩阵而不是8个较小的矩阵.水平和垂直分割很容易达到更传统的表现形式.但是,如果您的库执行类似的优化,它可能更容易,更有效.

以下是相关的代码BasicLSTMCell:

concat = linear([inputs, h], 4 * self._num_units, True)

# i = input_gate, j = new_input, f = forget_gate, o = output_gate
i, j, f, o = array_ops.split(1, 4, concat)

linear函数执行矩阵乘法,将连接输入和先前h状态转换为4个[batch_size, self._num_units]形状矩阵.线性变换使用您在问题中引用的单个矩阵和偏差变量.然后将结果分成LSTM变换使用的不同门.

如果您想明确获取每个门的转换,可以将该矩阵拆分为4个块.使用4或8个线性变换从头开始实现它也很容易.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有