深层神经网络-图片识别-TF实现-数据可视化【人工智能学习】

经过上一篇文章的学习,我们对于浅层神经网络的学习已经有了初步印象,我们来复习以下:
对于神经网络,我们已经有了神经元的概念:每一个都是一个单独的回归函数罢了

对于从回归学习到浅层神经网络,我们知道添加隐藏层可以提高预测的准确率,并且成功定义了add_layer方法为我们添加节点,快速生成隐藏层

但是我们在浅层神经网络的学习里面的构建隐藏层还是采用了写死的方式,如果说要是想从浅层神经网络改成深层神经网络,则需要对上篇代码继续修改/

深层神经网络

浅层神经网络不同的是,深层神经网络的隐藏层是可变的,我们可以根据不同的数据源、训练集和数据特征来改变学习策略,以此达到一个比较好的学习效果。

一个两层的深层神经网络结构如下:
两层神经网络
上图所示的是一个具有两层隐藏层的深层神经网络

  1. 第一个隐藏层有 4 个节点,对应的激活函数为 ReLu 函数
  2. 第一个隐藏层有 2 个节点,对应的激活函数也是 Relu 函数
  3. 最后,输出层使用 softmax 函数作为激活函数

那么对于这样的,或者更多的神经网络,我们不可以再用下面的方法:

#浅层

    # 添加隐藏层
    l1 = add_layer(X, 784, 2000, activation_function=tf.nn.relu)
    pre = add_layer(l1, 2000, 10, activation_function=None)  # 输出

而是要先对深层网络的节点做好配置,之后构建可以服用的for循环函数,从而快速搭建

 #深层
 #【重点】规定节点结构
    layer_dims = [784,500,500,10] #结构,结构配置的地方
    layer_count = len(layer_dims)-1 #深度计算不算输入层

    layer_iter = X #初始化输入值,因节点输入层构建需要所以第一层用X,for循环构建神经网络,遍历layer_dims替换X
    for l in range(1,layer_count):
        layer_iter = add_layer(layer_iter,layer_dims[l-1],layer_dims[l],activation_function = tf.nn.relu)
    pre = add_layer(layer_iter,layer_dims[layer_count-1],layer_dims[layer_count],activation_function = None) #输出层节点要用最后一层隐藏层节点数量做输入

我们只需要改变这个构建方法即可,其它方式均可不变,最后得到代码:

#-*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

def add_layer(inputs ,in_size,out_size,activation_function= True):
    #初始化变量
    W = tf.Variable(tf.random_normal([in_size,out_size]))#初始化正态分布,in列,out行,第一层in传入784,第二层传入1000
    b = tf.Variable(tf.zeros([1,out_size])) #偏置量初始化,1列。out行

    Z = tf.matmul(inputs,W)+b #初始化公式,每一层都要有

     #为了防止报错,如果没有传入激活共识,则不作处理
    if activation_function is None:
        outputs = Z
    else:
        outputs = activation_function(Z)

    return outputs
 #构建主函数逻辑
if __name__ == 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值