深度前馈神经网络之深度神经网络(DNN)总结

一、深度前馈神经网络概览

多层感知机(MLP)和深度神经网络(DNN)是一样的模型,只是叫法不同。
深度神经网络(DNN),卷积神经网络(CNN)都属于深度前馈神经网络(DFNN)。这一部分主要讲全连接网络,下一部分讲卷积神经网络CNN。

  • 全连接,MLP,DNN采用,当前层的单元与上一层的每一个单元都有连接。
  • 稀疏连接,CNN采用,当前层的单元只与上一层的部分单元有连接。

网络结构

输入层–隐藏层(激活函数去线性化、解决异或问题)–输出层–处理层(softmax转换成概率分布)–最终输出层

二、深度神经网络(全连接网络)

1、前向传播计算算法

深度神经网络采用全连接网络结构,采用前向传播计算算法,代码如下

import tensorflow as tf

x = tf.constant([0.9, 0.85], shape=[1, 2])

# 使用随机正态分布函数声明w1和w2两个变量,其中w1是2x3的矩阵,w2是3x1的矩阵
# 这里使用了随机种子参数seed,这样可以保证每次运行得到的结果是一样的
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1), name="w1")
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1), name="w2")

# 将biase(偏置项)参数b1设置为初始值全为0的1x3矩阵,b2是初始值全为1的1x1矩阵
b1 = tf.Variable(tf.zeros([1, 3]))
b2 = tf.Variable(tf.ones([1]))

init_op = tf.global_variables_initializer()

a = tf.nn.relu(tf.matmul(x, w1) + b1)
y = tf.nn.relu(tf.matmul(a, w2) + b2)
with tf.Session() as sess:
    sess.run(init_op)
    print(sess.run(y))

解释:
一般权重参数会初始化为随机矩阵,偏置会初始化全为1或者全为0。

2、激活函数(应用于每一个节点从而去线性化)

通常来说ELU函数>leaky ReLU函数(和它的变种) >ReLU函数>tanh函数>逻辑函数
如果神经网络每一个节点的输出为输入的加权和,那么最后输出将成为一个线性模型,解决不了复杂的问题,所以我们使用激活函数使得每一个节点的输出为非线性,常用激活函数有Relu,Sigmoid,tanh,ELU。

Relu

tf.nn.relu(x, name = None)

函数形式 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值