当前位置: 代码迷 >> 综合 >> 深度学习-卷积神经网络-实例及代码1(入门)—利用Tensorflow和mnist数据集训练单层前馈神经网络/感知机实现手写数字识别
  详细解决方案

深度学习-卷积神经网络-实例及代码1(入门)—利用Tensorflow和mnist数据集训练单层前馈神经网络/感知机实现手写数字识别

热度:3   发布时间:2024-02-08 03:12:45.0

主要步骤

1、下载数据集,mnist数据集,可以直接去Lecun官网下载

      mnist数据集介绍可以参考这篇文章:MNIST数据集下载及可视化

2、获取mnist数据集操作的python包,github上有

3、编写代码,包括模型、训练和评估,利用训练集训练网络模型,利用测试集测试结果

      关于模型的介绍可以参考这篇文章:MNIST机器学习入门

具体代码如下所示,经过调试可用,注意导入操作mnist数据集的python包和配置正确的数据集路径:

代码执行结果:loss is: 3142.896240234375,acc is:0.9110999703407288


import tensorflow from tf
from TensorflowTest.mnist import imput_data#读取mnist数据集
mnist=input_data.read_data_sets('../../MNIST_data',one_hot=True)#图像输入,占位符,类似于函数变量
x=tf.placeholder('float',[None,784])
#图像标签,目标输出,占位符,类似于函数变量
yLabel=tf.placeholder('float',[None,10])#网络权值参数,待训练拟合
w=tf.Variable(tf.zeros([784,10]))
#偏置参数,待训练拟合
b=tf.Variable(tf.zeros([10]))
#根据网络模型实际输出
y=tf.nn.softmax(tf.matmul(x,w)+b)#损失函数,代价函数,类似机器学习中的准则函数
loss=-tf.reduce_sum(yLabel*tf.log(y))
#优化器采用梯度下降,优化准则为最小化损失函数
train_step=tf.train.GradientDescentOptimizer(0.01).minimize(loss)#模型预测正确与否的序列
correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(yLabel,1))
#模型预测的正确率
accuracy=tf.reduce_mean(tf.cast(correct_prediction,'float'))#tensorflow中的变量初始化,这是基础
init=tf.global_variables_initializer()
with tf.Session() as sess:with tf.device("/cpu:0"):sess.run(init)for i in range(1000):batch_xs,batch_ys=mnist.train.next_batch(100)#使用训练集的batch执行训练sess.run(train_step,feed_dict={x:batch_xs,yLabel:batch_ys})#使用测试集计算模型损失值和预测正确率lossValue,accuracyValue=sess.run([loss,accuracy],feed_dict={x:mnist.test.images,yLabel:mnist.test.labels})#使用测试集计算模型的预测结果prediction_result=sess.run(tf.argmax(y,1),feed_dict={x:mnist.test.images})#打印模型最终的损失值和计算结果print("loss is :{0},acc is:{1} ".format(lossValue,accuracyValue))
  相关解决方案