【问题标题】:Error in LSTM during testing测试期间 LSTM 出错
【发布时间】:2017-02-20 13:57:43
【问题描述】:

我的数据是 68871 x 43,其中的特征在列中。 1-42 并在第 1 列中标注。 43

我对数据进行分类的keras LSTM代码是

import numpy
import matplotlib.pyplot as plt
import pandas
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
    dataX, dataY = [], []
    for i in range(len(dataset)-look_back-1):
        a = dataset[i:(i+look_back), 0]
        #if i==0
        # print len(a)
        dataX.append(a)
        dataY.append(dataset[i + look_back, 43])
    return numpy.array(dataX), numpy.array(dataY)
# fix random seed for reproducibility
numpy.random.seed(7)
# load the dataset
#dataframe = pandas.read_csv('international-airline-passengers.csv', usecols=[1], engine='python', skipfooter=3)
dataset = numpy.loadtxt("Source.txt", delimiter=" ")
#dataset = dataframe.values
#dataset = dataset.astype('float32')
# normalize the dataset
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
# split into train and test sets
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]
# reshape into X=t and Y=t+1
look_back = 1
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = numpy.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(3, input_dim=look_back))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, nb_epoch=1, batch_size=1)
score, acc = model.evaluate(testX, testY)
print('Test score:', score)
print('Test accuracy:', acc)

我在测试期间收到此错误

请帮助解决这个问题,非常感谢提前

【问题讨论】:

  • 嘿。你的问题解决了吗?考虑验证答案或提供更多详细信息。

标签: python machine-learning tensorflow deep-learning keras


【解决方案1】:

我认为你的问题是model.evaluate(testX, testY) 只返回一个值。

您的错误消息告诉您numpy.float64 不可迭代。 model.evaluate(testX, testY) 返回一个 float64 意味着什么,因此您不能将它的返回值放入两个变量 score, acc

就像这样做:

def single_return():
    return np.float64(10)
a, b = single_return()

(请注意,此代码将引发完全相同的错误)。

然后我会建议,既现在修复它,又作为一个很好的做法,以便将来始终返回到单个变量,然后拆分。它使错误信息更加清晰,因为只有行有问题才会做作,而不是evaluation

希望对您有所帮助。
pltrdy

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多