---------------------------------------------------------------------UnboundLocalError Traceback most recent call lastCell In73 line 4 2 model = GPUDoc2Vecvector_size=100w
The error message "UnboundLocalError: local variable 'model' referenced before assignment" indicates that the variable 'model' is being referenced before it is assigned a value.
In the code snippet provided, it seems that the variable 'model' is defined as a class attribute in the GPUDoc2Vec class. However, in the train() method of the GPUDoc2Vec class, a new local variable 'model' is being created and used before the class attribute is assigned a value.
To fix this error, you can remove the local variable 'model' in the train() method and use the class attribute 'model' instead. Here's the modified code:
class GPUDoc2Vec(Doc2Vec):
def __init__(self, *args, **kwargs):
self.model = None
super().__init__(*args, **kwargs)
def train(self, documents, total_examples=None, total_words=None, epochs=None, start_alpha=None, end_alpha=None,
word_count=0, queue_factor=2, **kwargs):
graph = tf.Graph()
with graph.as_default():
# 创建一个doc2vec模型
self.model = super().train(documents, total_examples=self.model.corpus_count,
total_words=total_words, epochs=epochs,
start_alpha=start_alpha, end_alpha=end_alpha,
word_count=word_count, queue_factor=queue_factor,
**kwargs)
# 初始化tensorflow变量
session.run(tf.compat.v1.global_variables_initializer())
By using the class attribute 'self.model' instead of the local variable 'model', you can avoid the UnboundLocalError.
原文地址: https://www.cveoy.top/t/topic/i94Z 著作权归作者所有。请勿转载和采集!