• 大小: 11.06MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-26
  • 语言: Python
  • 标签: mnist  python  bp  

资源简介

mnist手写字体识别之BP,包括了python代码,mnist手写字体数据集,本科实验作业,讲的是BP神经网络算法的实现

资源截图

代码片段和文件信息

import tensorflow as tf
from  tensorflow.examples.tutorials.mnist  import  input_data
import matplotlib.pyplot as plt
mnist = input_data.read_data_sets(“MNIST_data/“ one_hot = True)

#建立BP神经网络模型
num_classes = 10#数据类型0-9
input_size = 784#28*28
hidden_units_size = 30#层节点数
batch_size = 1000#
training_iterations = 1#迭代次数

# 设置变量
X = tf.placeholder (tf.float32 shape = [None input_size])
Y = tf.placeholder (tf.float32 shape = [None num_classes])
W1 = tf.Variable (tf.random_normal ([input_size hidden_units_size]stddev = 0.1))#hidden_units_size = 30#正态分布随机数
B1 = tf.Variable (tf.constant (0.1)[hidden_units_size])#常数为1,形状为(11)
W2 = tf.Variable (tf.random_normal ([hidden_units_sizenum_classes] stddev = 0.1))#正态分布随机数
B2 = tf.Variable (tf.constant (0.1) [num_classes])
# 搭建计算网络 使用 relu 函数作为激励函数 这个函数就是 y = max (0x) 的一个类似线性函数 拟合程度还是不错的

#隐藏层
hidden_opt = tf.matmul (X W1) + B1#矩阵运算
hidden_opt = tf.nn.relu (hidden_opt)#激活函数

#输出层
final_opt = tf.matmul (hidden_opt W2) + B2#矩阵运算
final_opt = tf.nn.relu (final_opt)#激活函数最终的输出结果

c = tf.square(Y - final_opt)
loss = tf.reduce_mean(c)
#loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits (labels = Y logits = final_opt))#损失函数交叉熵方法
opt = tf.train.GradientDescentOptimizer (0.1).minimize (loss)
print(opt)
correct_prediction = tf.equal (tf.argmax (Y 1) tf.argmax (final_opt 1))
accuracy = tf.reduce_mean (tf.cast (correct_prediction ‘float‘))#将张量转化成float
# 进行计算 打印正确率初始化
sess = tf.Session ()#生成能进行TensorFlow计算的类
init = tf.global_variables_initializer ()#全局变量
sess.run (init)
for i in range (training_iterations) :
    batch = mnist.train.next_batch (batch_size)#每次迭代选用的样本数100
    batch_input = batch[0]
    batch_labels = batch[1]
    training_loss = sess.run ([opt loss] feed_dict = {X: batch_input Y: batch_labels})
    if (i+1) % 1000 == 0 :
        train_accuracy = sess.run (accuracy feed_dict = {X: batch_inputY: batch_labels})
        print (“step : %d training accuracy = %g “ % (i+1 train_accuracy))
###测试集输出结果可视化
def res_Visual(n):
    #sess=tf.Session()
    #sess.run(tf.global_variables_initializer())
    final_opt_a=sess.run(tf.argmax (final_opt 1)feed_dict = {X: mnist.test.imagesY: mnist.test.labels})
    plt.title(final_opt_a[n])
    print(final_opt)
    #图片可视化展示
    img = mnist.test.images[n].reshape((2828))#读取每行数据,格式为Ndarry
    plt.imshow(img cmap=‘Greys‘ interpolation=‘nearest‘)#可视化
    plt.show()
res_Visual(14)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-06-21 12:45  作业四 BP神经网络\MNIST_data\
     文件     1648877  2019-06-10 15:18  作业四 BP神经网络\MNIST_data\t10k-images-idx3-ubyte.gz
     文件        4542  2019-06-10 15:18  作业四 BP神经网络\MNIST_data\t10k-labels-idx1-ubyte.gz
     文件     9912422  2019-06-10 15:18  作业四 BP神经网络\MNIST_data\train-images-idx3-ubyte.gz
     文件       28881  2019-06-10 15:18  作业四 BP神经网络\MNIST_data\train-labels-idx1-ubyte.gz
     文件        2873  2019-06-13 14:48  作业四 BP神经网络\bp.py
     目录           0  2019-06-21 12:45  作业四 BP神经网络\

评论

共有 条评论