TensorFlow总结(2)——神经网络入门之全连接网络,附详细代码

本文详细介绍了一项基于MNIST手写数字集的全连接神经网络实验,包括实验目的、原理、内容及结果。通过使用TensorFlow框架,构建并训练了一个三层全连接神经网络,实现了对手写数字的识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验目的

1.基于 MNIST手写数字训练测试集,用Tensorflow构建一个三层全连接神经网络,并进行训练。
2.学会如何在Linux系统下搭建Tensorflow环境。
3.熟悉Tensorflow编程的基本流程。
4.熟悉全连接网络搭建的基本方法。

实验原理

神经网络可以指向两种,一个是生物神经网络,一个是人工神经网络。
生物神经网络:一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动。人工神经网络(Artificial Neural Networks,ANN)也简称为神经网络(NNs)或称作连接模型(Connection Model)是 20 世纪 40 年代后出现的。它是一种模仿动物神经网络行为特征,是一种应用类似于大脑神经突触联接的结构进行分布式并行信息处理的算法数学模型。它是由众多的神经元可调的连接权值连接而成,具有大规模并行处理、分布式信息存储、良好的自组织自学习能力等特点。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
神经元按照层来布局。最左边的层叫做输入层,负责接收输入数据;最右边的层叫输出层,我们可以从这层获取神经网络输出数据。输入层和输出层之间的层叫做隐藏层,因为它们对于外部来说是不可见的。 同一层的神经元之间没有连接。 第N层的每个神经元和第N-1层的所有神经元相连(这就是full connected的含义),第N-1层神经元的输出就是第N层神经元的输入。 每个连接都有一个权值。

实验内容

1.用python结合Tensorflow框架编程,构建全连接神经网络模型(Graph)。
2.用python结合Tensorflow框架,编写训练程序。
3.进行训练,考察最终训练精度,保存训练好的网络参数。

实验结果

代码

下面展示一些 内联代码片

#--coding='utf-8'--
#start act 2
import tensorflow as tf
import numpy as np
import pickle
from tensorflow.examples.tutorials.mnist import input_data
x= tf.placeholder(tf.float32, [None, 784])
y_= tf.placeholder(tf.float32, [None, 10])
def weight_variable(shape,name1):
    initial = tf.truncated_normal(shape,stddev=0.1)
    return tf.Variable(initial,name=name1)
def bias_variable(shape,name1):
    initial = tf.constant(0.1, shape=shape)
    return tf.Variable(initial,name=name1)
W01 = weight_variable([784, 100],'W01')
b01 = bias_variable([100],'b01')
h01=tf.matmul(x,W01) + b01
x01 = tf.nn.relu(h01)
#end act 2
#start act 3
W02 = weight_variable([100,50],'W02')
b02 = bias_variable([50],'b02')
x02 = tf.nn.relu(tf.matmul(x01, W02) + b02)
W03 = weight_variable([50,10],'W03')
b03 = bias_variable([10],'b03')
h03 = tf.matmul(x02, W03) + b03
y=tf.nn.softmax(h03) # ?y=tf.nn.softmax(h02,1)
#end act 3
#start act 4
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ *tf.log(y),reduction_indices=[1]))
train_step =   tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
#end act 4
#start act 5
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
mnist = input_data.read_data_sets('/data/MNIST_data',one_hot=True)

for i in range(4000):
    batch_xs,batch_ys = mnist.train.next_batch(80)
    sess.run(train_step, feed_dict={x: batch_xs,y_: batch_ys})
    if i%200 ==0:
        print(sess.run(accuracy, feed_dict={x: mnist.test.images,y_: mnist.test.labels}))
    W10,b10,W20,b20,W30,b30 = sess.run([W01,b01,W02,b02,W03,b03])
    with open('/data/wb.data','wb') as f:
        pickle.dump([W10,b10,W20,b20,W30,b30],f)

运行结果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值