错误消息 '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。

解决 Python 中的 'UnboundLocalError: local variable 'model' referenced before assignment' 错误

原文地址: https://www.cveoy.top/t/topic/jqgH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录