在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python数据库编程 → mnist_CNN 深度学习小实例

mnist_CNN 深度学习小实例

Python数据库编程

下载此实例
  • 开发语言:Python
  • 实例大小:4.11KB
  • 下载次数:41
  • 浏览次数:635
  • 发布时间:2018-05-03
  • 实例类别:Python数据库编程
  • 发 布 人:YangAotuway
  • 文件格式:.py
  • 所需积分:2
 相关标签: c t s

实例介绍

【实例简介】利用mnist数据集做深度学习小实例

【实例截图】

from clipboard

【核心代码】

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 20 09:03:09 2018

@author: Administrator
"""

import tensorflow as tf 
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

#对一个张量进行全面的汇总(均值,标准差,最大最小值,直方图)
# (用于 TensorBoard 可视化).
def variable_summaries(var):
    with tf.name_scope('summaries'):
        mean = tf.reduce_mean(var)
        tf.summary.scalar('mean', mean)
        with tf.name_scope('stddev'):
            stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
            tf.summary.scalar('stddev', stddev)
            tf.summary.scalar('max', tf.reduce_max(var))
            tf.summary.scalar('min', tf.reduce_min(var))
            tf.summary.histogram('histogram', var)

print('~~~~~~~~~~开始设计计算图~~~~~~~~')
# 告诉TensorFlow模型将会被构建在默认的Graph上.
with tf.Graph().as_default():
    
    #定义输入节点
    with tf.name_scope('DataInput'):
        X = tf.placeholder(tf.float32, shape=[None, 784], name='X')
        Y_true = tf.placeholder(tf.float32, shape=[None, 10], name='Y_true')
    
    #将数据转换为图片    
    with tf.name_scope('input_reshape'):
        image_shaped_input = tf.reshape(X, [-1, 28, 28, 1])
        tf.summary.image('input', image_shaped_input, 10)
        
    #定义前项输入过程
    with tf.name_scope('Interface'):
        W = tf.Variable(tf.zeros([784,10]), name='Wights')
        variable_summaries(W)
        b = tf.Variable(tf.zeros([10]), name='Bias')
        variable_summaries(b)
        Y_pred = tf.add(tf.matmul(X, W), b)
        tf.summary.histogram('pred', Y_pred)
        
    #定义损失节点
    with tf.name_scope('Loss'):
        #使用Softmax将前项预测结果转换为概率
        with tf.name_scope('Softmax'):
            Y_pred_prob = tf.nn.softmax(logits=Y_pred)
            tf.summary.histogram('pred_prob', Y_pred_prob)
        #使用交叉熵损失
        with tf.name_scope('cross_entropy'):
            TrainLoss = tf.reduce_mean(-tf.reduce_sum(Y_true*tf.log(Y_pred_prob),axis=1))
        
    tf.summary.scalar('cross_entropy', TrainLoss)

    #定义训练节点
    with tf.name_scope('Train'):
        # Optimizer: 创建一个梯度下降优化器
        Optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
        # Train: 定义训练节点将梯度下降法应用于Loss
        TrainStep = Optimizer.minimize(TrainLoss)

 #Evaluate: 定义评估节点
    with tf.name_scope('Evaluate'):
        correct_prediction = tf.equal(tf.argmax(Y_pred_prob, 1), tf.argmax(Y_true, 1))
        accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    tf.summary.scalar('accuracy', accuracy)
    
    #整合所有节点,写入事件文件
    merged = tf.summary.merge_all()

    # Initial:添加所有Variable类型的变量的初始化节点
    InitOp = tf.global_variables_initializer()

    print('把计算图写入事件文件,在TensorBoard里面查看')
    train_writer = tf.summary.FileWriter(logdir='logs/mnist_softmax', graph=tf.get_default_graph())
    #writer.close()

    #训练过程
    mnist = input_data.read_data_sets('MNIST_data', one_hot=True)#获取数据
    #启动会化
    sess = tf.Session()
    sess.run(InitOp)#初始化所有变量W,b
    # 开始按批次训练,总共训练1000个批次,每个批次100个样本
    for i in range(1000):
        batch_xs, batch_ys = mnist.train.next_batch(100)
        summary, _, train_loss= sess.run([merged, TrainStep, TrainLoss],
                                feed_dict={X:batch_xs, Y_true: batch_ys})
        #print("train step: ", i, ", train_loss: ", train_loss)
        train_writer.add_summary(summary, i)
        
        #对模型进行评估
        accuracy_score = sess.run(accuracy,feed_dict={X: mnist.test.images,
                                                        Y_true: mnist.test.labels})
        #print("模型准确率:", accuracy_score)
    
    train_writer.close()
                

标签: c t s

实例下载地址

mnist_CNN 深度学习小实例

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警