解决 Python 中的 'UnboundLocalError: local variable 'model' referenced before assignment' 错误
错误消息 'UnboundLocalError: local variable 'model' referenced before assignment' 表示变量 'model' 在被赋值之前就被引用了。
在提供的代码片段中,变量 'model' 似乎在 GPUDoc2Vec 类中被定义为一个类属性。然而,在 GPUDoc2Vec 类的 train() 方法中,一个新的局部变量 'model' 被创建并使用,而这发生在类属性被赋值之前。
为了修复这个错误,您可以从 train() 方法中删除局部变量 'model',并改用类属性 'model'。以下是如何修改代码:
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())
通过使用类属性 'self.model' 而不是局部变量 'model',您可以避免 UnboundLocalError。
原文地址: https://www.cveoy.top/t/topic/jqgH 著作权归作者所有。请勿转载和采集!