Python Keras最简单的神经网络模型:带有指数的training.py中的错误
我已经阅读了这个例子,并决定在我的基础上使用这个想法,因为这是Keras最简单的NN 这是我的基地 (你可以下载我的csv文件,它只有83Kb) 这是我的底图: base.shape=(891,23) 输出: X_列车=(891,22) y_列=(891,) 输出: 22列车样本 22个测试样本Python Keras最简单的神经网络模型:带有指数的training.py中的错误,python,tensorflow,neural-network,keras,mnist,Python,Tensorflow,Neural Network,Keras,Mnist,我已经阅读了这个例子,并决定在我的基础上使用这个想法,因为这是Keras最简单的NN 这是我的基地 (你可以下载我的csv文件,它只有83Kb) 这是我的底图: base.shape=(891,23) 输出: X_列车=(891,22) y_列=(891,) 输出: 22列车样本 22个测试样本 y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_tes
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
model = Sequential()
model.add(Dense(40, activation='relu', input_shape=(21,)))
model.add(Dropout(0.2))
#model.add(Dense(20, activation='relu'))
#odel.add(Dropout(0.2))
model.add(Dense(2, activation='sigmoid'))
model.summary()
输出:
图层(类型)输出形状参数
密集型_1(密集型)(无,40)880
辍学1(辍学)(无,40)0
密集型_2(密集型)(无,2)82
model.compile(loss='binary_crossentropy',
optimizer=Adam(),
metrics=['accuracy'])
plot_model(model, to_file='model.png')
SVG(model_to_dot(model).create(prog='dot', format='svg'))
print("X_train.shape=", X_train.shape)
print("X_test=",X_test.shape)
history = model.fit(X_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(X_test, y_test))
回溯(最近一次呼叫最后一次):
文件“new.py”,第67行,在
验证数据=(X_检验,y_检验)
文件“miniconda3/lib/python3.6/site packages/keras/models.py”,第845行
初始_历元=初始_历元)
文件“miniconda3/lib/python3.6/site-packages/keras/engine/training.py”,第1405行,适合
批次大小=批次大小)
文件“miniconda3/lib/python3.6/site packages/keras/engine/training.py”,第1295行,在用户数据中
异常(前缀为“模型输入”)
文件“miniconda3/lib/python3.6/site packages/keras/engine/training.py”,第133行,输入数据
str(array.shape))
ValueError:检查模型输入时出错:预期密集_1_输入具有形状(无,21),但获得具有形状(623,22)的数组
[在5.1s内完成,退出代码为1]
如何解决此错误?我尝试将输入形状更改为(20,)或(22,)等,但没有成功。
例如,如果input_shape=(22,)我有一个错误:文件“miniconda3/lib/python3.6/site packages/pandas/core/index.py”,第1873行,在maybe_convert_索引中
raise INDEXEROR(“索引超出范围”)
input\u shape
应与数据中的要素数量相同,并且在您的情况下应为input\u shape=(22,)
索引器
是由于pandas dataframe中的某些不同索引造成的,因此请使用as_matrix()
将数据帧转换为numpy矩阵:
你能打印
y\u测试
的形状吗?y\u train.shape(623,2)y\u test.shape(268,2)和X\u测试
shape?X\u test.shape(268,22)X\u train.shape(623,22)吗
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
model = Sequential()
model.add(Dense(40, activation='relu', input_shape=(21,)))
model.add(Dropout(0.2))
#model.add(Dense(20, activation='relu'))
#odel.add(Dropout(0.2))
model.add(Dense(2, activation='sigmoid'))
model.summary()
model.compile(loss='binary_crossentropy',
optimizer=Adam(),
metrics=['accuracy'])
plot_model(model, to_file='model.png')
SVG(model_to_dot(model).create(prog='dot', format='svg'))
print("X_train.shape=", X_train.shape)
print("X_test=",X_test.shape)
history = model.fit(X_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(X_test, y_test))
history = model.fit(X_train.as_matrix(), y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(X_test.as_matrix(), y_test))