ValueError: 预期的 dense_1_input 具有形状 (None, 4) 但得到 (78,2)
Posted
技术标签:
【中文标题】ValueError: 预期的 dense_1_input 具有形状 (None, 4) 但得到 (78,2)【英文标题】:ValueError: expected dense_1_input to have shape (None, 4) but got (78,2) 【发布时间】:2018-07-16 01:34:11 【问题描述】:我根本不了解数组的形状或如何确定训练数据的时期和批次大小。我的数据有 6 列,第 0 列是自变量 - 一个字符串,第 1-4 列是深度神经网络输入,第 5 列是输入的二进制结果。我有 99 行数据。 我想了解如何摆脱这个错误。
#Importing Datasets
dataset=pd.read_csv('TestDNN.csv')
x = dataset.iloc[:,[1,5]].values # lower bound independent variable to upper bound in a matrix (in this case up to not including column5)
y = dataset.iloc[:,5].values # dependent variable vector
#Splitting data into Training and Test Data
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.2, random_state=0)
#Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
x_train = sc.fit_transform(x_train)
x_test=sc.transform(x_test)
# PART2 - Making ANN, deep neural network
#Importing the Keras libraries and packages
import keras
from keras.models import Sequential
from keras.layers import Dense
#Initialising ANN
classifier = Sequential()
#Adding the input layer and first hidden layer
classifier.add(Dense(activation= 'relu', input_dim =4, units=2,
kernel_initializer="uniform"))#rectifier activation function
#Adding second hidden layer
classifier.add(Dense(activation= 'relu', units=2,
kernel_initializer="uniform")) #rectifier activation function
#Adding the Output Layer
classifier.add(Dense(activation= 'sigmoid', units=1,
kernel_initializer="uniform"))
#Compiling ANN - stochastic gradient descent
classifier.compile(optimizer='adam', loss='binary_crossentropy',metrics=
['accuracy'])
#Fit ANN to training set
#PART 3 - Making predictions and evaluating the model
#Fitting classifier to the training set
classifier.fit(x_train, y_train, batch_size=32, epochs=5)#original batch is
10 and epoch is 100
【问题讨论】:
【参考方案1】:问题在于x
的定义。这一行:
x = dataset.iloc[:,[1,5]].values
... 告诉 pandas 只使用第 5 列,因此它的形状为 [78, 2]
。您可能的意思是在 5 号之前取 all 列:
x = dataset.iloc[:,:5].values
【讨论】:
以上是关于ValueError: 预期的 dense_1_input 具有形状 (None, 4) 但得到 (78,2)的主要内容,如果未能解决你的问题,请参考以下文章
ValueError: 预期的 dense_1_input 具有形状 (None, 4) 但得到 (78,2)
ValueError:检查输入时出错:预期dense_11_input 具有3 维,但得到了形状为(0, 1) 的数组
ValueError:检查目标时出错:预期dense_6的形状为(46,),但数组的形状为(1,)
ValueError:检查目标时出错:预期dense_4的形状为(4,)但得到的数组形状为(1,)
ValueError:检查输入时出错:预期dense_1_input有2维,但得到了形状为(60000、28、28)的数组