深度学习框架也用过几个了,一直比较喜欢的是Lasagne,因为其设计哲学是不回避底层(theano),而且封装得比较灵活,不像Keras那样完全一套自己的逻辑,底层借口暴露的太少,导致想做自己的模型的时候用keras非常费力。
从某种意义上说,个人觉得Lasagne其实不太能称得上是一个神经网络的框架,而是theano的一个非常好的toolbox,其整个设计都是把theano变得更好使用。
由于学习时间的多变,导致有时候会集中时间写一段时间的代码,有时候会集中时间看paper,所以经常忘掉 lasagne里的一些逻辑和规则,这次在这里我就不定期总结一些,当做给自己的一个tips. 所以其实很多技巧和经验是theano的经验,一并写一下。
声明网络输入变量的时候,需要提前设计好属性(vector或者matrix或者4d等等),如下:
c = T.imatrix()
q = T.ivector()
y = T.imatrix()
c_pe = T.tensor4()
q_pe = T.tensor4()属性的确定,是需要考虑到batch这个维度的,所以,单个输入是一个向量的话,声明的时候就是matrix,
另外,网络输出目标 y 是一个[batch_size,n_classes]的矩阵。label的转换问题,通常情况下,对于label都需要转换成为one-hot的向量,
有一个方便的工具
from sklearn.pr