ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多层感知机实现mnist识别(tensorflow 1.x)

2021-09-12 10:32:15  阅读:152  来源: 互联网

标签:batch 感知机 step num tf tensorflow hidden mnist


模型

在这里插入图片描述

代码

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data",one_hot="True")

# 超参数
learning_rate=0.1
num_steps = 500
batch_size = 128
display_step = 100
#神经网络参数
n_hidden_1 = 256 #第一层神经元个数
n_hidden_2 = 256 # 第二层神经元个数
num_input = 784 # mnist输入数据(图片大小28*28)
num_classes = 10 # mnist手写体数字识别(0-9)
#输入到数据流图中的训练数据
X = tf.placeholder("float",[None,num_input])
Y = tf.placeholder("float",[None,num_classes])

# 权重和偏置
weights = {
    'h1':tf.Variable(tf.random_normal([num_input,n_hidden_1])),
    'h2':tf.Variable(tf.random_normal([n_hidden_1,n_hidden_2])),
    'out':tf.Variable(tf.random_normal([n_hidden_2,num_classes]))
}
biases={
    'b1':tf.Variable(tf.random_normal([n_hidden_1])),
    'b2':tf.Variable(tf.random_normal([n_hidden_2])),
    "out":tf.Variable(tf.random_normal([num_classes]))
}

# 定义神经网络
def neural_net(x):
    #第一层隐藏层(256个神经单元)
    layer_1 = tf.add(tf.matmul(x,weights['h1']),biases['b1'])
    # 第二层隐藏层
    layer_2 = tf.add(tf.matmul(layer_1,weights['h2']),biases['b2'])
    #输出层
    out_layer = tf.matmul(layer_2,weights['out'],)+biases['out']
    return out_layer

# 构建模型
logits = neural_net(X)
#定义损失函数和优化器
loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits,labels = Y))
optimizer = tf.train.AdamOptimizer(lrarning_rate = learning_rate)
train_op = optimizer.minimize(loss_op)
#定义预测准确率
correct_pred = tf.equal(tf.argmax(logits,1),tf.argmax(Y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
#初始化所有变量(赋默认值)
init = tf.global_variables_initializer()

# 开始训练
with tf.Session() as sess:
    #执行初始化操作
    sess.run(init)
    for step in range(1,num_steps+1):
        batch_x , batch_y = mnist.train.next_batch(batch_size)
        #执行训练操作,包括前向和后向传播
        sess.run(train_op,feed_dict={X:batch_x,Y:batch_y})
        if step % display_step == 0 or step ==1:
            #计算损失值和准确率
            loss,acc = sess.run([loss_op,accuracy],feed_dict={X:batch_x,Y:batch_y})
            print("step:"+str(step),"Minibatch Loss"+"{:.4f}".format(loss)+"Training Accuracy"+"{:.3f}".format(acc))
    print("Optimization Finished!")
    #计算测试数据的准确率
    print("Testing Accuracy",sess.run(accuracy,feed_dict={X:mnist.test.images,Y:mnist.test.labels}))

结果

在这里插入图片描述

标签:batch,感知机,step,num,tf,tensorflow,hidden,mnist
来源: https://blog.csdn.net/weixin_49732545/article/details/120247596

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有