使用' givens'在deeplearning教程中真的有必要吗?

时间:2015-10-22 14:16:12

标签: theano

deep learning tutorials中,所有训练数据都存储在shared数组中,只有该数组的索引传递给训练函数以切出小批量。 我知道这允许将数据留在GPU内存中,而不是将小块数据作为参数传递给每个小批量的训练功能。 在一些previous questions中,这是为什么在教程中使用givens机制的答案。

我还没有看到这两个概念之间的联系,所以我可能错过了必不可少的东西。 据我所知,givens机制用给定的符号表达式交换图中的变量(即,插入一些给定的子图代替该变量)。 那么为什么不首先按照我们需要的方式定义计算图?

这是一个最小的例子。我定义了一个共享变量X和一个整数index,我要么创建一个已包含切片操作的图形,要么我创建一个切片操作通过{{1}后插入切片操作的图形}。 从表面上看,两个结果函数givensget_nogivens是相同的(参见最后的调试图)。

但是为什么教程会使用get_tutorial模式?

givens

1 个答案:

答案 0 :(得分:0)

他们此处仅使用givens来分离从输入数据变量传递给图表的实际数据。您可以使用X[index * batch_size: (index + 1) * batch_size]显式替换输入变量,但这只是更麻烦一点。