<python数据分析与挖掘实战>第10章 训练多层神经网络的错误解决

来源:互联网 发布:税务金三系统网络风险 编辑:程序博客网 时间:2024/06/09 14:30

我用的是win7 py36,在学习这本书第10章时,运行书中的源代码老是出错,这里记录一下.

书中源代码是:

import numpy as npimport pandas as pdfrom pandas import DataFramefrom pandas import Seriesfrom numpy import nan as NAdatafile = '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 Sequentialfrom keras.layers.core import Dense, Dropout, Activationmodel = 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') #保存模型参数

就可以正常运行了

阅读全文
1 0
原创粉丝点击