【发布时间】:2017-10-29 11:15:02
【问题描述】:
我还是 keras 和 python 的新手,我遇到了一个我似乎无法理解的错误。 错误是:
Traceback (most recent call last):
File "/Users/N/PycharmProjects/hw2/hw2_1.py", line 35, in <module>
model.fit(trainingInp, trainingOut, epochs=10, batch_size=1)
File "/Library/Python/2.7/site-packages/keras/models.py", line 893, in fit
initial_epoch=initial_epoch)
File "/Library/Python/2.7/site-packages/keras/engine/training.py", line 1555, in fit
batch_size=batch_size)
File "/Library/Python/2.7/site-packages/keras/engine/training.py", line 1409, in _standardize_user_data
exception_prefix='input')
File "/Library/Python/2.7/site-packages/keras/engine/training.py", line 126, in _standardize_input_data
array = arrays[i]
UnboundLocalError: local variable 'arrays' referenced before assignment
它发生在 model.fit() 中。我的模型是这样的:
model = Sequential()
model.add(Dense(3, activation='sigmoid', input_dim=8))
model.add(Dropout(0.5))
model.add(Dense(10, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['accuracy'])
print trainingInp
print trainingOut
model.fit(trainingInp, trainingOut, epochs=10, batch_size=1)
我打印我的数据以确保我没有传入空数据,并且它在进入 model.fit() 之前正确打印。
我不太确定如何解决它,因为我真的不知道问题出在哪里。看起来问题是batch_size,但我认为允许批量大小为1。
这是我获取数据的方式。我保证数据没有任何空值。
#read and categorize data
data = pandas.read_csv('cars.data.txt', delim_whitespace=True, header=None)
#turn class into an integer
enc = pandas.factorize(data['class'])
data["enc"] = enc[0]
#split the data set and make class into a matrix of outputs
trainingSet, testingSet = train_test_split(data, test_size=0.3)
trainingInp = trainingSet.iloc[:,1:9]
trainingOut = keras.utils.to_categorical(trainingSet['enc'], num_classes=10)
testingInp = testingSet.iloc[:,1:9]
testingOut = keras.utils.to_categorical(testingSet['enc'], num_classes=10)
【问题讨论】:
-
显示您声明 trainingInp 和 trainingOut 变量的代码。如果可能,也向我们展示数据。
-
好的,我已经添加了我的变量声明。感谢您的帮助。
-
只是一种预感,您可以尝试将批量大小增加到 2 的幂或什么的吗?还是批量大小为 32?
-
查看我的变量声明实际上就是答案。我的印象是 train_test_split 返回了数组,但它仍然返回一个熊猫数据框。当通过 trainingInp.values 时,问题就消失了。感谢您的帮助。我想我需要更加注意我的声明。