Skip to content

Viterbi解码的cat操作中,tensor维度不一致 #8

@wangruicn

Description

@wangruicn

Traceback (most recent call last):
File "/home/rui/workspace/lattice-lstm/LatticeLSTM-master/main.py", line 459, in
train(data, save_model_dir, seg)
File "/home/rui/workspace/lattice-lstm/LatticeLSTM-master/main.py", line 286, in train
batch_charlen, batch_charrecover, batch_label, mask)
File "/home/rui/workspace/lattice-lstm/LatticeLSTM-master/model/bilstmcrf.py", line 32, in neg_log_likelihood_loss
scores, tag_seq = self.crf._viterbi_decode(outs, mask)
File "/home/rui/workspace/lattice-lstm/LatticeLSTM-master/model/crf.py", line 159, in _viterbi_decode
partition_history = torch.cat(partition_history,0).view(seq_len, batch_size,-1).transpose(1,0).contiguous() ## (batch_size, seq_len. tag_size)
RuntimeError: invalid argument 0: Tensors must have same number of dimensions: got 2 and 3 at /pytorch/torch/lib/THC/generic/THCTensorMath.cu:102

在对partition_history执行cat操作时,输入的tensor list维度不一致。

partition_history中,第一个tensor是 [batch_size, tag_size, 1]:

partition = inivalues[:, START_TAG, :].clone().view(batch_size, tag_size, 1)  # bat_size * to_target_size     
partition_history.append(partition)

而在for中,torch.max返回的partition形状为 [batch_size,tag_size],与第一个tensor维度不一致,导致cat操作失败

cur_values = cur_values + partition.contiguous().view(batch_size, tag_size, 1).expand(batch_size, tag_size, tag_size)
partition, cur_bp = torch.max(cur_values, 1)
partition_history.append(partition)

请问如何修改

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions