我用的是win7 py36,在学习这本书第10章时,运行书中的源代码老是出错,这里记录一下.
书中源代码是:
import numpy as np import pandas as pd from pandas import DataFrame from pandas import Series from numpy import nan as NA datafile = 'D:\data\chapter10\demo\data\\train_neural_network_data.xls' datafile2 = 'D:\data\chapter10\demo\data\\test_neural_network_data.xls' data_train = pd.read_excel(datafile) data_test = pd.read_excel(datafile2) y_train = data_train.iloc[:, 4].as_matrix() x_train = data_train.iloc[:, 5:17].as_matrix() y_test = data_test.iloc[:, 4].as_matrix() x_test = data_test.iloc[:, 5:17].as_matrix() from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation model = Sequential() model.add(Dense(11, 17)) model.add(Activation('relu')) model.add(Dense(17, 10)) model.add(Activation('relu')) model.add(Dense(10, 1)) model.add(Activation('sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', class_mode='binary') model.fit(x_train, y_train, nb_epoch=100, batch_size=1) model.save_weights('net.model') r = pd.DataFrame(model.predict_classes(x_test), columns=['预测结果']) pd.concat([data_test.iloc[:, :5], r], axis=1).to_excel('test.xls') model.predict(x_test)
在中间model.add方法中,Dense设置错误了:应该修改为:
model = Sequential() #建立模型 model.add(Dense(input_dim=11, output_dim=17)) #添加输入层、隐藏层的连接 model.add(Activation('relu')) #以Relu函数为激活函数 model.add(Dense(output_dim=17, inout_dim=10)) #添加隐藏层、隐藏层的连接 model.add(Activation('relu')) #以Relu函数为激活函数 model.add(Dense(input_dim=10, output_dim=1)) #添加隐藏层、输出层的连接 model.add(Activation('sigmoid')) #以sigmoid函数为激活函数 #编译模型,损失函数为binary_crossentropy,用adam法求解 model.compile(loss='binary_crossentropy', optimizer='adam') model.fit(x_train, y_train, nb_epoch = 100, batch_size = 1) #训练模型 model.save_weights('net.model') #保存模型参数
就可以正常运行了