• 大小: 11.13MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-16
  • 语言: 其他
  • 标签: 深度学习  

资源简介

这里面包含整个基于神经网络深度学习 实现手写体识别项目,包括原始数据 训练数据 训练模型 测试数据等 总共是三种方式实现这是第二种和模型

资源截图

代码片段和文件信息

# coding: utf-8

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

# 载入数据集
mnist = input_data.read_data_sets(‘MNIST_data‘ one_hot=True)

# 每个批次的大小
batch_size = 100
# 计算一共有多少个批次
n_batch = mnist.train.num_examples // batch_size


# 参数概要
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)  # 直方图


# 定义初始化权值函数
def weight_variable(shape name):
    initial = tf.truncated_normal(shape stddev=0.1)
    return tf.Variable(initial name=name)


# 定义初始化偏置函数
def bias_variable(shape name):
    initial = tf.constant(0.1 shape=shape)
    return tf.Variable(initial name=name)


# 卷积层
def conv2d(x W):
    return tf.nn.conv2d(x W strides=[1 1 1 1] padding=‘SAME‘)


# 池化层
def max_pool_2x2(x):
    return tf.nn.max_pool(x ksize=[1 2 2 1] strides=[1 2 2 1] padding=‘SAME‘)


# 输入层
# 命名空间
with tf.name_scope(‘input‘):
    # 定义两个placeholder
    x = tf.placeholder(tf.float32 [None 784] name=‘x-input‘)
    y = tf.placeholder(tf.float32 [None 10] name=‘y-input‘)
    with tf.name_scope(‘x_image‘):
        # 改变x的格式转为4D的向量[batch in_height in_width in_channels]‘
        x_image = tf.reshape(x [-1 28 28 1] name=‘x_image‘)

# 第一个卷积层,激活层,池化层
with tf.name_scope(‘Conv1‘):
    # 初始化第一个卷积层的权值和偏置
    with tf.name_scope(‘W_conv1‘):
        W_conv1 = weight_variable([5 5 1 32] name=‘W_conv1‘)  # 5*5的采样窗口,32个卷积核从1个平面抽取特征
    with tf.name_scope(‘b_conv1‘):
        b_conv1 = bias_variable([32] name=‘b_conv1‘)  # 每一个卷积核一个偏置值
    # 把x_image和权值向量进行卷积,再加上偏置值,然后应用于relu激活函数
    with tf.name_scope(‘conv2d_1‘):
        conv2d_1 = conv2d(x_image W_conv1) + b_conv1
    with tf.name_scope(‘relu‘):
        h_conv1 = tf.nn.relu(conv2d_1)
    with tf.name_scope(‘h_pool1‘):
        h_pool1 = max_pool_2x2(h_conv1)  # 进行max-pooling池化

# 第二个卷积层,激活层,池化层
with tf.name_scope(‘Conv2‘):
    # 初始化第二个卷积层的权值和偏置
    with tf.name_scope(‘W_conv2‘):
        W_conv2 = weight_variable([5 5 32 64] name=‘W_conv2‘)  # 5*5的采样窗口,64个卷积核从32个平面抽取特征
    with tf.name_scope(‘b_conv2‘):
        b_conv2 = bias_variable([64] name=‘b_conv2‘)  # 每一个卷积核一个偏置值
    # 把h_pool1和权值向量进行卷积,再加上偏置值,然后应用于relu激活函数
    with tf.name_scope(‘conv2d_2‘):
        conv2d_2 = conv2d(h_pool1 W_conv2) + b_conv2
    with tf.name_scope(‘relu‘):
        h_conv2 = tf.nn.relu(conv2d_2)
    with tf.name_scope(‘h_pool2‘):
        h_pool2 = max_pool_2x2(h_conv2)  # 进行max-pooling

# 第一个全连接层
with tf.name_scope(‘fc1‘):
    # 初始化第一个全连接层的权值
    with tf.name_scope(‘W_fc1‘):
        W_fc1 = wei

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-04-21 18:51  mnist2\
     目录           0  2019-04-21 18:51  mnist2\logs\
     目录           0  2019-04-21 18:51  mnist2\logs\test\
     文件      262906  2019-04-21 18:23  mnist2\logs\test\events.out.tfevents.1555841857.XPS-15
     目录           0  2019-04-21 18:51  mnist2\logs\train\
     文件      262906  2019-04-21 18:23  mnist2\logs\train\events.out.tfevents.1555841857.XPS-15
     文件        7297  2019-04-21 18:17  mnist2\mnist2.py
     目录           0  2019-04-21 18:51  mnist2\MNIST_data\
     文件     1648877  2019-04-21 18:17  mnist2\MNIST_data\t10k-images-idx3-ubyte.gz
     文件        4542  2019-04-21 18:17  mnist2\MNIST_data\t10k-labels-idx1-ubyte.gz
     文件     9912422  2019-04-21 18:17  mnist2\MNIST_data\train-images-idx3-ubyte.gz
     文件       28881  2019-04-21 18:17  mnist2\MNIST_data\train-labels-idx1-ubyte.gz

评论

共有 条评论