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是个常量 计 ...
随机推荐
- python 验证码处理
一. 灰度处理,就是把彩色的验证码图片转为灰色的图片. 二值化,是将图片处理为只有黑白两色的图片,利于后面的图像处理和识别 # 自适应阀值二值化 def _get_dynamic_binary_ima ...
- NIO 的非阻塞式网络通信
1.阻塞与非阻塞 ① 传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write()时, 该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务. 因 ...
- 路由器硬改+刷OpenWrt+挂载摄像头+U盘
标题: 路由器硬改+刷OpenWrt+挂载摄像头+U盘 作者: 梦幻之心星 347369787@QQ.com 标签: [路由器, OpenWrt, 摄像头, 固件] 目录: 路由器 日期: 2019- ...
- Vue拖拽交换数据(非插件)
HelloWorld.vue 文件 <template> <div class="hello"> <h1>{{ msg }}</h1> ...
- 使用jetty作为内嵌服务器启动项目
http://blog.csdn.net/robinpipi/article/details/7557035 需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中.在网上 ...
- 解锁网络编程之NIO的前世今生
个人博客网:https://wushaopei.github.io/ (你想要这里多有) NIO 内容概览: NIO 网络编程模型 NIO 网络编程详解 NIO 网络编程实战 NIO 网络编程缺 ...
- Spring ( 四 )Spring的AOP动态代理、切面编程
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.AOP切面编程 1.什么是AOP AOP是面向切面编程.全称:Aspect Oriented Pro ...
- (Java实现) 组合的输出
问题 B: [递归入门]组合的输出 时间限制: 1 Sec 内存限制: 128 MB 题目描述 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r < = n),我们 ...
- Java实现蓝桥杯历届试题填字母游戏
题目描述 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格子,要小 ...
- java实现立方和等式
考虑方程式:a^3 + b^3 = c^3 + d^3 其中:"^"表示乘方.a.b.c.d是互不相同的小于30的正整数. 这个方程有很多解.比如: a = 1,b=12,c=9, ...