UnboundLocalError: 在赋值之前引用了局部变量 ‘batch_index’ [重复]

这不是我的代码,但这是显示问题的行:

model.fit(trainX, trainY, batch_size=2, epochs=200, verbose=2)

(正如我现在所想,这段代码很可能使用了较旧版本的TF,因为 ‘epochs’ 被写成了 ‘nb_epoch’)。

代码的最后更新时间是:2017年1月11日!

我已经尝试了网上找到的所有方法(其实并不多),包括查看tensorflow/keras的源代码以寻找一些线索。需要明确的是,我的代码中并没有名为 ‘batch_index’ 的变量。

到目前为止,我已经查看了不同版本的TF(tensorflow/tensorflow/python/keras/engine/training_arrays.py)。看起来这些都是2018年的版权,但有些是从fit_loop函数开始的,而另一些是从model_iteration开始的(这可能是fit_loop的更新)。

因此,这个 ‘batch_index’ 变量只能在第一个函数中看到。

我怀疑我是否走在正确的方向上?!

展示代码是没有意义的,因为如我所解释的,代码中根本没有这样的变量。

但是,这里是引发错误的 ‘stock_prediction’ 函数的一些代码:

def stock_prediction():    # 从csv文件中收集数据点    dataset = []    with open(FILE_NAME) as f:        for n, line in enumerate(f):            if n != 0:                dataset.append(float(line.split(',')[1]))    dataset = np.array(dataset)    # 创建数据集矩阵(X=t 和 Y=t+1)    def create_dataset(dataset):        dataX = [dataset[n+1] for n in range(len(dataset)-2)]        return np.array(dataX), dataset[2:]            trainX, trainY = create_dataset(dataset)    # 创建并拟合多层感知器模型    model = Sequential()    model.add(Dense(8, input_dim=1, activation='relu'))    model.add(Dense(1))    model.compile(loss='mean_squared_error', optimizer='adam')    model.fit(trainX, trainY, nb_epoch=200, batch_size=2, verbose=2)    # 我们对明天的预测    prediction = model.predict(np.array([dataset[0]]))    result = '价格将从 %s 变为 %s' % (dataset[0], prediction[0][0])    return result
---------------------------------------------------------------------------UnboundLocalError                         Traceback (most recent call last)<ipython-input-19-3dde95909d6e> in <module>     14      15 # 我们有了文件,所以我们创建神经网络并获取预测---> 16 print(stock_prediction())     17      18 # 我们完成了,所以我们删除csv文件<ipython-input-18-8bbf4f61c738> in stock_prediction()     23     model.add(Dense(1))     24     model.compile(loss='mean_squared_error', optimizer='adam')---> 25     model.fit(trainX, trainY, batch_size=1, epochs=200, verbose=2)     26      27     # 我们对明天的预测~\Anaconda3\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)   1176                                         steps_per_epoch=steps_per_epoch,   1177                                         validation_steps=validation_steps,-> 1178                                         validation_freq=validation_freq)   1179    1180     def evaluate(self,~\Anaconda3\lib\site-packages\keras\engine\training_arrays.py in fit_loop(model, fit_function, fit_inputs, out_labels, batch_size, epochs, verbose, callbacks, val_function, val_inputs, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps, validation_freq)    211                     break    212 --> 213             if batch_index == len(batches) - 1:  # 最后一个批次。    214                 if do_validation and should_run_validation(validation_freq, epoch):    215                     val_outs = test_loop(model, val_function, val_inputs,UnboundLocalError: 在赋值之前引用了局部变量 'batch_index'

一点澄清:

我尝试查看我的tf/keras版本,这是它的版本:

from tensorflow.python import kerasprint(keras.__version__)import kerasprint(keras.__version__)import tensorflowprint(tensorflow.__version__)

2.2.4-tf

2.2.5

1.14.0

为什么keras显示不同的版本?


回答:

我在 training_arrays.py (这里) 中检查了您遇到错误的函数,我认为问题可能出在这些语句(从第177行到第205行):

batches = make_batches(num_train_samples, batch_size)for batch_index, (batch_start, batch_end) in enumerate(batches): # 问题在这里    # 做一些事情    ...if batch_index == len(batches) - 1:    # 做一些事情    ...

如果batches是一个空列表,您可能会遇到这个错误。您的训练集可能存在一些问题吗?

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注