测试期间LSTM出错

2024-04-26 09:16:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据是68871 x 43,其中特征在第1-42列,标签在第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)

我在测试时遇到这个错误enter image description here

请帮忙解决这个问题,提前多谢


Tags: fromimportnumpysizemodellencreateback
1条回答
网友
1楼 · 发布于 2024-04-26 09:16:27

我认为您的问题是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

相关问题 更多 >