DataLayer 放置在由 Shai 的 LSTM 实现生成的 .prototxt 文件中
DataLayer placement in the .prototxt file generated by Shai's LSTM implementation
关于@Shai 在 LSTM module for Caffe 中提供的答案,其中 caffe.NetSpec()
用于显式地及时展开 LSTM 单元以进行训练。
使用此代码实现,为什么 "DummyData"
层或用作输入 X
的任何数据层出现在 t0
时间步的末尾,就在之前"t1/lstm/Mx"
在 prototxt 文件中?我不明白...
因此需要进行操作(剪切/粘贴)。
Shai's NetSpec implementation of LSTM及时展开。因此,对于每个时间步长,都有一个 LSTM 单元,其跨时间步长共享权重。
每个时间单位的 "bottom"(例如 t1/lstm/Mx
)是输入 X 的不同时间步长。
顺便说一下,我建议您使用 draw_net.py
caffe 实用程序来绘制生成的 prototxt 并查看数据流和展开的 LSTM 单元的时间重复。
这是展开的网的样子:
您可以看到三个 LSTM 单元的组件,以及 X
的 不同 时间切片进入每个时间展开的 LSTM 单元。
关于@Shai 在 LSTM module for Caffe 中提供的答案,其中 caffe.NetSpec()
用于显式地及时展开 LSTM 单元以进行训练。
使用此代码实现,为什么 "DummyData"
层或用作输入 X
的任何数据层出现在 t0
时间步的末尾,就在之前"t1/lstm/Mx"
在 prototxt 文件中?我不明白...
因此需要进行操作(剪切/粘贴)。
Shai's NetSpec implementation of LSTM及时展开。因此,对于每个时间步长,都有一个 LSTM 单元,其跨时间步长共享权重。
每个时间单位的 "bottom"(例如 t1/lstm/Mx
)是输入 X 的不同时间步长。
顺便说一下,我建议您使用 draw_net.py
caffe 实用程序来绘制生成的 prototxt 并查看数据流和展开的 LSTM 单元的时间重复。
这是展开的网的样子:
X
的 不同 时间切片进入每个时间展开的 LSTM 单元。