Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用reccurent层运行ANN时出错_Python_Neural Network_Theano_Keras - Fatal编程技术网

Python 使用reccurent层运行ANN时出错

Python 使用reccurent层运行ANN时出错,python,neural-network,theano,keras,Python,Neural Network,Theano,Keras,我已经创建了下面的ANN,有两个完全连接的层和一个循环层。但是在运行它时,我得到一个错误:异常:输入0与层lstm_11不兼容:预期ndim=3,发现ndim=2为什么会发生这种情况 from keras.models import Sequential from keras.layers import Dense from sklearn.cross_validation import train_test_split import numpy from sklearn.preprocessi

我已经创建了下面的ANN,有两个完全连接的层和一个循环层。但是在运行它时,我得到一个错误:
异常:输入0与层lstm_11不兼容:预期ndim=3,发现ndim=2
为什么会发生这种情况

from keras.models import Sequential
from keras.layers import Dense
from sklearn.cross_validation import train_test_split
import numpy
from sklearn.preprocessing import StandardScaler
from keras.layers import LSTM 




seed = 7
numpy.random.seed(seed)

dataset = numpy.loadtxt("sorted_output.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:15]
scaler = StandardScaler(copy=True, with_mean=True, with_std=True ) #data normalization
X = scaler.fit_transform(X) #data normalization
Y = dataset[:,15]
# split into 67% for train and 33% for test
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed)
# create model
model = Sequential()
model.add(Dense(12, input_dim=15, init='uniform', activation='relu'))
model.add(LSTM(10, return_sequences=True))
model.add(Dense(15, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X_train, y_train, validation_data=(X_test,y_test), nb_epoch=150, batch_size=10)

基于上述情况,所有层都是LSTM中的“密集”层,您返回的序列为true。。您应该将return_sequences设置为False,因为所有密集层都是这样,所以它应该可以工作

此错误的原因是
LSTM
希望输入具有3个维度的形状(对于批次、序列长度和输入维度)。但在输出2维形状(用于批处理和输出维)之前的
密集层

通过执行以下代码行,您可以看到
密集
层的输出形状

>>> model = Sequential()
>>> model.add(Dense(12, input_dim=15, init='uniform', activation='relu'))
>>> model.summary()
____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
dense_4 (Dense)                  (None, 12)            192         dense_input_2[0][0]              
====================================================================================================
Total params: 192
Trainable params: 192
Non-trainable params: 0
____________________________________________________________________________________________________
但是,您没有用模型解释您的意图,因此我无法就此问题向您提供进一步的指导。你的输入数据是什么?您希望输入是一个序列吗

如果您的输入是一个序列,那么我建议您删除第一个
densed
层。但是如果您的输入不是序列,那么我建议您删除
LSTM