首页 > 其他 > 详细

第一个神经网络

时间:2019-02-27 16:21:25      阅读:186      评论:0      收藏:0      [点我收藏+]

1.keras训练神经网络的一般步骤

  • 导入数据,做数据处理,使数据符合模型要求
  • 定义网络结构
  • 定义损失函数、优化器、监控指标
  • 训练模型
  • 图形化

2.使用MNIST数据集的一个例子

from keras.datasets import mnist
from keras import models
from keras import layers
from keras.utils import to_categorical
import matplotlib.pyplot as plt
#导入数据
(train_x,train_y),(test_x,test_y) = mnist.load_data()
#每个神经元表示一个像素,所以把3维数据转换成2维数据
train_x = train_x.reshape(60000,28*28)
train_x = train_x.astype(float32) /255
test_x = test_x.reshape(10000,28*28)
test_x = test_x.astype(float32) /255
#把数据中类别用向量表示,以便使用交叉熵,6---->[0,0,0,0,0,0,1,0,0,0]
train_y = to_categorical(train_y)
test_y = to_categorical(test_y)
#定义网络结构
network = models.Sequential()
#Dense表示全连接 network.add(layers.Dense(
512,activation="relu",input_shape=(28*28,))) network.add(layers.Dense(10,activation="softmax")) #定义损失函数、优化器、监控指标 network.compile(optimizer="rmsprop",loss="categorical_crossentropy",metrics=[accuracy]) #训练模型 history = network.fit(train_x,train_y,batch_size=128,epochs=11,validation_data=(test_x,test_y)) history_dict = history.history loss = history_dict[loss] val_loss = history_dict[val_loss] acc = history_dict[acc] val_acc = history_dict[val_acc] epochs = range(1,11) #loss的图 plt.subplot(121) plt.plot(epochs,loss,g,label = Training loss) plt.plot(epochs,val_loss,b,label = Validation loss) plt.xlabel(Epochs) plt.ylabel(Loss) #显示图例 plt.legend() plt.subplot(122) plt.plot(epochs,acc,g,label = Training accuracy) plt.plot(epochs,val_acc,b,label = Validation accuracy) plt.xlabel(Epochs) plt.ylabel(accuracy) plt.legend() plt.show()

结果图如下

可以发现随着轮数的提升,训练集的损失在不断减少,验证集的损失在轮数为5左右达到了最小;同理随着轮数提升,训练集的精度在不断提升,验证集的精度在轮数为5左右达到最大;提示我们有可能发生了过拟合,可以把轮数改为5

技术分享图片

 

第一个神经网络

原文:https://www.cnblogs.com/vshen999/p/10444358.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!