gpt4 book ai didi

python - UnboundLocalError : local variable 'batch_index' referenced before assignment

转载 作者:行者123 更新时间:2023-12-03 18:34:53 25 4
gpt4 key购买 nike

这不是我的代码,这里是一行,它显示了一个问题:

模型.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():

# Collect data points from 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)

# Create dataset matrix (X=t and 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)

# Create and fit Multilinear Perceptron model
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)

# Our prediction for tomorrow
prediction = model.predict(np.array([dataset[0]]))
result = 'The price will move from %s to %s' % (dataset[0], prediction[0][0])

return result



---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-19-3dde95909d6e> in <module>
14
15 # We have our file so we create the neural net and get the prediction
---> 16 print(stock_prediction())
17
18 # We are done so we delete the csv file

<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 # Our prediction for tomorrow

~\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: # Last batch.
214 if do_validation and should_run_validation(validation_freq, epoch):
215 val_outs = test_loop(model, val_function, val_inputs,

UnboundLocalError: local variable 'batch_index' referenced before assignment

一点澄清:

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

from tensorflow.python import keras
print(keras.__version__)
import keras
print(keras.__version__)
import tensorflow
print(tensorflow.__version__)

2.2.4-tf

2.2.5

1.14.0

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

最佳答案

我检查了 training_arrays.py ( here ) 出现错误的函数,正如我所见,我认为问题可能出在这些语句中(第 177 - 205 行):

batches = make_batches(num_train_samples, batch_size)
for batch_index, (batch_start, batch_end) in enumerate(batches): # the problem is here
# do stuff
...
if batch_index == len(batches) - 1:
# do stuff
...

如果batches 是一个空列表,您可能会收到此错误。可能是你的训练集有问题?

关于python - UnboundLocalError : local variable 'batch_index' referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57935988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com