参考Github项目:https://github.com/timgaripov/TensorNet-TF
参考论文链接:http://arxiv.org/abs/1509.06569
在一个复杂的大型神经网络中,权重(Weights)的保存需要占用相当大的空间,尤其是在全连接层(FC-layers)部分。张量压缩是以张量(tensor)的形式保存权重矩阵的技术,能够在具有较高压缩率的情况下保持模型的准确率,从而得到一个轻量的模型。
张量
张量(计算机领域的张量)即使不同维度的数组(array),一维的张量就是向量(vector),二维的张量即是矩阵(matrix)。
TT-format
TT-format是文中提出的一种表示张量的方法。如上图所示,一个四维的张量(344*3),被分解成了四个三维的张量(称为Core),这个张量在(2,4,2,3)处的值就可以通过四个core中对应的矩阵相乘来得到。
在这个例子中,张量本身的参数量是3*4*4*3=144,而用TT-format进行表示只需要3*3+3*3*4+3*3*4+3*3=90个参数,这个例子的秩为3,如果能得到更低的秩,就可以得到更高的压缩率。
除此之外,TT-format还可以用来表示矩阵和向量,并支持进行按位乘法、加法。
TT-layer
在神经网络的全连接层中,前向传播需要计算y=Wx+b,反向传播则需要计算dW和db。
通过将y,x,W,b分别以张量的形式表示,再转化成TT-format进行运算,既能节省内存,也能节省时间。同样,反向传播过程也能通过这种方法节约计算资源。
计算量对比: