Как извлечь веса BLSTM в факел с помощью lua и поместить их в pytorch BLSTM:
пример
# torch
rnn = c`udnn.BLSTM(1280, 256, 5, false, 0.5)`
# pytorch
nn.LSTM(input_size=1280, hidden_size=256, num_layers=5,
bidirectional=True, dropout=0.5)
, чтобы показать вес и уклоны, мы можем использовать:
rnn:weights()
rnn:biaises()
здесь rnn: weights ()
{ 1 :
{
1 : CudaTensor - size: 327680
2 : CudaTensor - size: 327680
3 : CudaTensor - size: 327680
4 : CudaTensor - size: 327680
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 2 :
{
1 : CudaTensor - size: 327680
2 : CudaTensor - size: 327680
3 : CudaTensor - size: 327680
4 : CudaTensor - size: 327680
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 3 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 4 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 5 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 6 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 7 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 8 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 9 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} 10 :
{
1 : CudaTensor - size: 131072
2 : CudaTensor - size: 131072
3 : CudaTensor - size: 131072
4 : CudaTensor - size: 131072
5 : CudaTensor - size: 65536
6 : CudaTensor - size: 65536
7 : CudaTensor - size: 65536
8 : CudaTensor - size: 65536
} }
Здесь похоже, что веса сцеплены, как вычислить высоту и ширину каждого фильтра.Кроме того, я ожидаю, что 20 тензоров весов и смещений (5 (слои) * 2 (направления) * 2 (веса, weights_reverse))