我正在运行具有以下规格的模型。此外,这是通过anaconda提示符在虚拟笔记本电脑中运行的。
# Import packages
from keras.models import Sequential
from keras.layers import Dense, Activation, LSTM, Flatten
from keras.preprocessing.sequence import pad_sequences
import tensorflow as tf
import pandas as pd
import numpy as np
seq=[]
lag_seq=[]
for i in range(100):
list1=list()
list2=list()
for a in range(10):
list1.append((a))
for b in range(9):
list2.append(b)
seq.append(list1)
lag_seq.append(list2)
seq=pd.Series(data=seq)
lag_seq=pd.Series(data=lag_seq)
data=seq.to_frame('SEQ')
data.insert(loc=1, column='LAG_SEQ',value=lag_seq)
targets=np.vstack((np.ones((50,2)), np.zeros((50,2))))
np.random.shuffle(targets)
trainX=data[0:70].values
trainY=data[0:70].values
testX=data[70:100].values
testY=data[70:100].values
trainX =np.reshape(trainX, (trainX.shape[0],trainX.shape[1],1))
testX = np.reshape(testX, (testX.shape[0],testX.shape[1],1))
print(trainX.shape, trainY.shape, testX.shape, testY.shape)
model = Sequential()
model.add(LSTM(64,return_sequences=True,stateful=True,
batch_input_shape=(1,2,1)))
model.add(Flatten())
model.add(Dense(2, activation='softmax'))
model.compile(optimizer='adam',metrics=['accuracy'],
loss='categorical_crossentropy')
# Fit the Model
history = model.fit(list(trainX),trainY, epochs=20,verbose=0,shuffle=False,batch_size=(10))
我也尝试在拟合时传递数组列表,并得到以下错误。
检查模型输入时出错:传递给模型的Numpy数组列表不是模型期望的大小。预计会看到1个数组,但得到了以下1000个数组的列表:[array([[list(['1','9','11','10','3','9' ,'7','7','23',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0、0 ......
如果我未将trainX放在列表中,则会出现此错误: ValueError:设置具有序列的数组元素
有什么建议可以解决吗?
答案 0 :(得分:0)
如果trainY是用keras的to_categorical进行的一键编码,则 在model.fit中,使用
np.array(trainY)
代替
trainY
答案 1 :(得分:0)
您检查数据是int还是float?如果有对象。就像错误一样。
因此,您需要通过df.dtypes
进行检查。
print(data.dtypes)