【发布时间】:2017-08-22 04:16:21
【问题描述】:
我收到以下错误。
Traceback (most recent call last):
File "main.py", line 63, in <module>
question_classifier = QuestionClassifier(corpus.dictionary, embeddings_index, corpus.max_sent_length, args)
File "/net/if5/wua4nw/wasi/academic/research_with_prof_chang/projects/question_answering/duplicate_question_detection/source/question_classifier.py", line 26, in __init__
self.embedding = EmbeddingLayer(len(dictionary), args.emsize, args.dropout)
File "/if5/wua4nw/anaconda3/lib/python3.5/site-packages/torch/nn/modules/module.py", line 255, in __setattr__
"cannot assign module before Module.__init__() call")
AttributeError: cannot assign module before Module.__init__() call
我有一堂课如下。
class QuestionClassifier(nn.Module):
def __init__(self, dictionary, embeddings_index, max_seq_length, args):
self.embedding = EmbeddingLayer(len(dictionary), args.emsize, args.dropout)
self.encoder = EncoderRNN(args.emsize, args.nhid, args.model, args.bidirection, args.nlayers, args.dropout)
self.drop = nn.Dropout(args.dropout)
所以,当我运行以下行时:
question_classifier = QuestionClassifier(corpus.dictionary, embeddings_index, corpus.max_sent_length, args)
我收到上述错误。这里EmbeddingLayer和EncoderRNN是我写的一个类,继承nn.module就像QuestionClassifier类。
我在这里做错了什么?
【问题讨论】:
-
你能发布完整的堆栈跟踪吗?
-
我已经发布了。我相信我错过了一些东西,但不知道是什么!
-
我不熟悉
torch,但也许您必须在派生类__init__中调用nn.Module.__init__(),然后才能修改任何属性... -
其实我就是这么做的!!
-
在您的代码中?在分配给属性之前?我不知道在哪里......