全连接层在tensorflow中是叫Dense层,在pytorch中叫线性层(Linear),全连接层可以将输入特征与每个神经元之间的连接权重进行线性运算:矩阵乘法和偏置加法操作,得到最终输出结果,它确确实实是一个线性单元。
1)tensorflow转pytorch
假定输入的通道数目是4,输出的通道数目是8,输入的形状是(1,5,6,4)。
tensorflow:
Dense(units=8)的weight形状是(4,8),bias形状是(8,)注意Dense不需要定义输入的通道,它自己会根据输入的形状定义获取输入的通道。
pytorch:
Linear(4, 8)的weight形状是(8,4),bias形状是(8,)
所以Dense到Linear的参数转换就是一个简单的转置操作。
#tensorflow 参数转 pytorch
layer_th.weight.data = torch.tensor(weights[0].T)
layer_th.bias.data = torch.tensor(weights[1])
完整的代码如下: