用于在CNTK中将LSTM NDL转换为Python的基元

时间:2017-01-24 20:15:45

标签: python lstm cntk

我正在尝试将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。我找不到任何支持或示例。

1 个答案:

答案 0 :(得分:1)

从CNTK团队找到答案 - https://github.com/Microsoft/CNTK/wiki/Port-LSTM-NDL-primitives-to-Python

  1. 您需要使用占位符_变量以及稍后对replace_placeholders的调用。以下是一个简单的示例:https://github.com/Microsoft/CNTK/wiki/Implement-an-attention-mechanism

  2. 使用splice

  3. 使用元素乘法(a.k.a *)

  4. 使用常量。您可以通过numpy数组指定初始值。有很多方法可以将文本(或其他)文件加载到numpy数组中。 np.loadtxt应该可以工作,但我还没试过。