Tensorflow实现神经网络的前向传播
我们构想有一个神经网络,输入为两个input,中间有一个hidden layer,这个hiddenlayer当中有三个神经元,最后有一个output。
图例如下:

在实现这个神经网络的前向传播之前,我们先补充一下重要的知识。
一.权重w以及input的初始化
我们初始化权重w的方法为随机生成这些权重,一般可以使用这些随机生成的数据正好在正态分布的曲线上,这也是最符合生成符合自然规律的随机数生成方法:
import tensorflow as tf
#一般情况下神经网络上的参数是w的数列,当然我们一般使用随机数来生成这些参数
w=tf.Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1))
#其中stddev表示标准差,mean表示均值,【】表示随机生成正态分布的数值的shape
这样我们的权重就生成了,我们初始化input的方法有有以下几种,伪代码如下:
除了这种方式,我们还可以使用
tf.constant([1,2,3]),来生成指定数值
tf.zeros([2,3],int32),用来生成全零
tf.ones([2,3],int32),同来生成全1
tf.fill([3,2],6),生成指定数值
下面我们编写一个仅有一个初始值input的神经网络,并利用tensorflow实现对其进行前向传播。因为初始值仅有一个,实现的方法一共有两种,我们来看看第一种:
二.神经网络的前向传播(仅具一个初始值,方法一)
import tensorflow as tf x=tf.constant([[0.7,0.5]])#注意这里,写了两个中括号啊!
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)) #然后定义向前传播的过程
a=tf.matmul(x,w1)
y=tf.matmul(a,w2) #利用session计算前向传播的结果
with tf.Session() as sess:
init_op=tf.global_variables_initializer()
sess.run(init_op)
print(sess.run(y))#这里使用run(y)打印出结果,因为最后一个输出我们定义的是y
输出:
[[3.0904665]]
三.神经网络的前向传播(仅具一个初始值,方法二)
我们利用placeholder进行数据的初始化,赋值给input,使用placeholder既可以赋一个值,也可以赋多个值,这也是它很常见的原因,代码如下:
import tensorflow as tf x=tf.placeholder(tf.float32,shape=(1,2))
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)) #同样地定义前向传播的过程
a=tf.matmul(x,w1)
y=tf.matmul(a,w2) #利用session计算前向传播的结果
with tf.Session() as sess:
init_op=tf.global_variables_initializer()
sess.run(init_op)
print(sess.run(y,feed_dict={x:[[0.7,0.5]]}))#这里使用run(y)打印出结果,因为最后一个输出我们定义的是y
输出:
[[3.0904665]]
结果和方法一相同。接下来就可以对多个数据进行前向传播了,也是利用placeholder方法
四.神经网络的前向传播(多个初始值)
代码如下:
import tensorflow as tf x=tf.placeholder(tf.float32,shape=(None,2))
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1) #同样地定义前向传播的过程
a=tf.matmul(x,w1)
y=tf.matmul(a,w2 #利用session计算前向传播的结果
with tf.Session() as sess:
init_op=tf.global_variables_initializer()
sess.run(init_op)
print(sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.5,0.5]]}))
输出:
[[3.0904665]
[1.2236414]
[2.5171587]]
完毕!看起来还是挺简单的吧!tensorflow在工业界的应用还是十分广泛的,想要创业和在业界工作的朋友就可以好好了解一下了!
Tensorflow实现神经网络的前向传播的更多相关文章
- 1. DNN神经网络的前向传播(FeedForward)
1. DNN神经网络的前向传播(FeedForward) 2. DNN神经网络的反向更新(BP) 3. DNN神经网络的正则化 1. 前言 神经网络技术起源于上世纪五.六十年代,当时叫感知机(perc ...
- 实现属于自己的TensorFlow(一) - 计算图与前向传播
前段时间因为课题需要使用了一段时间TensorFlow,感觉这种框架很有意思,除了可以搭建复杂的神经网络,也可以优化其他自己需要的计算模型,所以一直想自己学习一下写一个类似的图计算框架.前几天组会开完 ...
- 卷积神经网络(CNN)前向传播算法
在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...
- 神经网络,前向传播FP和反向传播BP
1 神经网络 神经网络就是将许多个单一“神经元”联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入.例如,下图就是一个简单的神经网络: 我们使用圆圈来表示神经网络的输入,标上“”的圆 ...
- 吴裕雄 python 神经网络——TensorFlow 三层简单神经网络的前向传播算法
import tensorflow as tf w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1)) w2= tf.Variable( ...
- 跟我学算法-tensorflow 实现神经网络
神经网络主要是存在一个前向传播的过程,我们的目的也是使得代价函数值最小化 采用的数据是minist数据,训练集为50000*28*28 测试集为10000*28*28 lable 为50000*10, ...
- Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股
第一讲:人工智能概述 第三讲:Tensorflow框架 前向传播: 反向传播: 总的代码: #coding:utf-8 #1.导入模块,生成模拟数据集 import t ...
- TensorFlow笔记-04-神经网络的实现过程,前向传播
TensorFlow笔记-04-神经网络的实现过程,前向传播 基于TensorFlow的NN:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型 张量(tenso ...
- tensorflow学习笔记(1)-基本语法和前向传播
tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程. 图中的constant是个常量 计 ...
随机推荐
- hdl - HLS vs. Generator
https://mp.weixin.qq.com/s/n_4RKlOddr_p2S_wODvFbw 介绍硬件建模的各个层次,以及基于RTL进一步提高层次的方法. 1. 物理版图 直接画 ...
- 一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)
背景 在日常开发中,偶尔会遇到需要复制对象的情况,需要进行对象的复制. 由于现在流行标题党,所以,一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝) 理解 首先就需要理解 js 中的数据类型 ...
- 基于GTID搭建主从MySQL
目录 基于gtid搭建主从MySQL 一.GTID的使用 二.GTID的简介 三.GTID的构成 四.查看GTID的执行情况 4.1 gtid_executed 4.2 gtid_own 4.3 gt ...
- SpringSecurity(1)---认证+授权代码实现
认证+授权代码实现 Spring Security是 一种基于 Spring AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和 ...
- JavaScript (一) js的介绍及基本语法变量
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.JS 的 介绍 1.JavaScript :简称 : js js 分为三个部分: 1. ECMASc ...
- Java实现 LeetCode 509 斐波那契数
509. 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0, F(1) = 1 ...
- Java实现蓝桥杯VIP算法训练 奇变的字符串
试题 算法训练 奇变的字符串 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 将一个字符串的奇数位(首位为第0位)取出,将其顺序弄反,再放回原字符串的原位置上. 如字符串" ...
- Java实现 LeetCode 215. 数组中的第K个最大元素
215. 数组中的第K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6 ...
- Winform最基础的DBHelper类
PS:我已经忘记了n遍了 class DBHelper { //连接数据库 public static string connstring = @"Data Source=DESKTOP-8 ...
- java实现机器人行走
某少年宫引进了一批机器人小车.可以接受预先输入的指令,按指令行动.小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字). 例如,我们可以对小车输入如下的指令: ...