Pytorch在训练过程中常见的问题

 

Pytorch在训练过程中常见的问题

 

7 Assertion `cur_target >= 0 && cur_target < n_classes’ failed.
我们在分类训练中经常遇到这个问题,一般来说在我们网络中输出的种类数和你label设置的种类数量不同的时候就会出现这个错误。

但是,Pytorch有个要求,在使用CrossEntropyLoss这个函数进行验证时label必须是以0开始的:

假如我这样:

self.classes = [0, 1, 2, 3]


我的种类有四类,分别是0.1.2.3,这样就没有什么问题,但是如果我写成:

self.classes = [1, 2, 3, 4]

这样就会报错。
 

10 view()操作只能用在连续的tensor下
利用is_contiguous()判断该tensor在内存中是否连续,不连续的话使用.contiguous()使其连续。

 

3 RuntimeError:  input.size(-1) must be equal to input_size
原因: 使用view时维度指定错误,LSTM(input,(h0,c0)) 指定batch_first=True​后,input就是(batch_size, seq_len, input_size)否则为input(seq_len, batch, input_size)

解决:

lstm_out, self.hidden = self.lstm( embeds.view( self.batch_size, 200, EMBEDDING_DIM ), self.hidden ) 


4 Expected object of scalar type Float but got scalar type Double for argument #2 'target'

X = Variable(X).float()
y = Variable(y).type(torch.LongTensor)

 

 

 

 

 

你可能感兴趣的:(PyTorch)