首页 文章

在theano中对张量的正式定义

提问于
浏览
1

我正在尝试制作char-rnn,它预测了与Theano之前角色的下一个角色 .

因此,存在4个值得注意的张量(或矩阵) .

x:输入形状[timelength,inputsize] h:隐藏状态形状[timelength,hiddensize] y:输出形状[timelength,inputsize] t:目标值形状[timelength-1,inputsize]

在这里,目标值张量t明确定义为正式:

t [i,j]:= x [i 1,j]但是如何使用上面的定义定义t?

x = T.matrix(name="x")
t = ? # t[i] := x[i+1] but how to define it in theano?

PS . 我研究了theano的nnet.conv2d,但没有运气

1 回答

  • 0

    原始序列是整数的矢量,编码字符 . 这被转换为一个热门编码,提供输入 . 索引为5的字符的单热编码是一个向量,其中第5个元素为1,其余为零 . 看起来你真的很需要 . 你可以使用原始的整数编码,在这种情况下 t 将是一个向量,而不是一个矩阵 . 长度应该是 timelength ,而不是 timelength-1 .

    相应的theano定义是:

    t = ivector(name="t") # for 32-bit integer
    t = lvector(name="t") # for 64-bit integer
    

    您应该使用用于索引的任何整数类型,因为在计算交叉熵损失时,目标将用作输出的索引( y ) .

    char-rnn处理序列的连续块 . 假设字符编码整数的原始序列称为 chars . 序列中的当前位置是 p . 块长度为 timelength . 对于当前块,输入 x 包含 chars[p : p + timelength] 的单热编码 . 目标 t 包含 chars[p + 1 : p + timelength + 1] . 这样,每个目标都比输入提前一步 .

    原始的char-rnn代码here非常简单 . 它使用numpy而不是theano,以及's written will be slightly different. But, it'对理解概念非常有用的方式 .

相关问题