我正在尝试将LSTM NDL配置转换为Python,但无法找到对遵循NDL原语的支持
延迟 - 如何在网络中稍后定义的变量的延迟中传递参数?例如,对于窥视孔LSTM,稍后定义单元状态变量,例如c_t,但是需要延迟以获得c_t_minus_1单元状态,例如c_t_minus_1 = Delay(c_t)。但是,Python不允许首先使用变量(例如c_t)并在以后定义。
RowStack,RowSlice - 这些原语是否有替代品?如果不是如何在python中实现它们?我们可以对变量进行操作,就好像它们是numpy数组一样吗?
DiagTime vs ElementTimes - 它们之间是否存在向量元素明智乘法的差异?也是在Python中支持的DiagTimes?
参数初始化 - 如何在python中初始化文件中的参数并将computeGradient设置为false。我找不到任何支持或示例。
答案 0 :(得分:1)
从CNTK团队找到答案 - https://github.com/Microsoft/CNTK/wiki/Port-LSTM-NDL-primitives-to-Python
您需要使用占位符_变量以及稍后对replace_placeholders的调用。以下是一个简单的示例:https://github.com/Microsoft/CNTK/wiki/Implement-an-attention-mechanism
使用splice
使用元素乘法(a.k.a *)
使用常量。您可以通过numpy数组指定初始值。有很多方法可以将文本(或其他)文件加载到numpy数组中。 np.loadtxt应该可以工作,但我还没试过。