全连接网络:实现第一个全连接网络

全连接网络实现手写数字识别

程序分为三个部分,分别是

mnist_forward.py:前向传播。

mnist_backward.py:反向传播。

mnist_test.py:模型测试。

前向传播

这里搭建了全连接网络。我使用了一个三层的网络。输入的是784个神经元(mnist中一张图片的大小);隐藏层的神经元的个数分别是500,200;输出层是10个神经元,是预测的结果。

下面是mnist_forward.py文件

import tensorflow as tf
import os

os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"  # 忽略tensorflow警告信息

def get_weight(shape,regularizer):
    w = tf.Variable(tf.truncated_normal(shape,stddev=0.1))
    if regularizer!=None:
        tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))
    return w

def get_bias(shape):
    b = tf.Variable(tf.zeros(shape))
    return b

def forward(x,regularizer):
    '''
    这里定义一个3层的全连接网络
    第0层:输入层,784个神经元
    第1层:隐藏层,500个神经元
    第2层:隐藏层,200个神经元
    第3层:输出层,10个神经元
    '''
    w1 = get_weight([784,500],regularizer)
    b1 = get_bias([500])
    y1 = tf.nn.leaky_relu(tf.matmul(x,w1) + b1)

    w2 = get_weight([500,200],regularizer)
    b2 = get_bias([200])
    y2 = tf.nn.leaky_relu(tf.matmul(y1,w2) + b2)

    w3 = get_weight([200,10],regularizer)
    b3 = get_bias([10])
    y = tf.matmul(y2,w3) + b3
    return y

反向传播

1)参数使用了滑动平均

2)使用指数衰减学习率

3)在训练过程中,进行了模型的保存

下面是mnist_backward.py

import tensorflo
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值