TensorFlow笔记-04-神经网络的实现过程,前向传播
TensorFlow笔记-04-神经网络的实现过程,前向传播
基于TensorFlow的NN:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型
张量(tensor):多维数组(列表)
阶:张量的维数
计算图(Graph):搭建神经网络的计算过程,只搭建,不运算
会话(Session):执行计算图中的结点运算
神经网络的参数:即计算图中的权重,也可以说是神经元(后面会提到)线上的权重,用变量表示,一般会随机生成这些参数。生成参数的方法是让 w(神经元上的线) 等于 tf.Variable,把生成的方式写在括号里
神经网络中常用的生成随机数/数组的函数有:

看不懂也没有关系
其中Variable有4种:zeros,ones,fill,constant
tf.zeros····全0数组··············tf.zeros([3,2],int32) 生成[[0,0],[0,0],[0,0]]
tf.ones·····全1数组··············tf.ones([3,2],int32) 生成[[1,1],[1,1],[1,1]]
tf.fill·······全定值数组··············tf.fill([3,2],6) 生成[[6,6],[6,6],[6,6]]
tf.constant··直接给值··············tf.zeros([3,2,1]) 生成[3,2,1]
神经网络的搭建
神经网络的实现过程:
- 1.准备数据,提取特征,作为输入喂给神经网络 (Neural Network,NN,神经网络简称NN)
- 2.搭建NN结构,从输入到输出(先搭建计算图,再用会话执行)
(NN前向传播算法 ===> 计算输出) - 3.大量特征数据喂给NN,迭代优化NN参数
(NN反向传播算法 ===> 优化参数训练模型) - 4.使用训练好的模型,预测和分类
- 由此可见,基于神经网络的机器学习主要分两个过程,即训练过程和使用过程,训练过程是第一步,第二步,第三步的循环迭代,使用的第四步,一旦参数优化完成就可以固定这些参数,实现特定应用了
前向传播:
- 前向传播就是搭建模型计算过程,让模型具有推理能力(以全连接网络为例),可以针对一组输入给出相应的输出
- 举个例子:
生产一批零件将体积想 x1 和重量 x2 为特征的输入 NN,通过 NN 后输出一个数值 - 分析:
- 体积和重量就是我们要选择的特征,把他们喂入神经网络,当体积和重量这组数据走过神经网络后,会得到一个输出,
- 假设输入的特征是:体积:0.7,重量0.5
- 我们搭建的神经网络:

- 由神经网络可得,隐藏节点 a11 = x1w11 + x2w21 = 0.14 + 0.15 = 0.29
- 同理算得节点 a12 = 32,a13 = 0.38,最终计算得到输出层 Y= 0.015
- 这便实现了前向传播
前向传播过程的 Tensorflow 描述:
变量初始化,计算图节点都要用到会话
with tf.Session() as sess:(前面提到的 with 结构)
变量初始化:
- 在 sess.run 函数中用 tf.global_variables_initializer() 汇总所有待优化变量:
init_op = tf.global_variables_initializer()
sess.run(init_op)代码前向传播文件:https://xpwi.github.io/py/TensorFlow/tf05forward.py
# coding:utf-8
# 前向传播
# 两层简单神经网络(全连接)
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)
# 用会话计算结果
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
print("y in tf05前向传播 is:\n", sess.run(y))
# 结果:
# [[3.0904665]]
运行结果:
- 向神经网络喂入1组特征
- 用placeholder实现输入自定义(sess.run中喂1组数据)
- 代码前向传播2文件:https://xpwi.github.io/py/TensorFlow/tf05forward2.py
# coding:utf-8
# 前向传播
# 两层简单神经网络(全连接)
import tensorflow as tf
# 定义输入和参数
# 用placeholder实现输入自定义(sess.run中喂1组数据)
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)
# 用会话计算结果
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
# 字典,喂入一组特征
print("y in tf05forward2 is:\n", sess.run(y, feed_dict={x:[[0.7,0.5]]}))
# 结果:
# [[3.0904665]]
一次向神经网络喂入n组特征
# coding:utf-8
# 前向传播
# 两层简单神经网络(全连接)
# 向神经网络喂入n组特征
import tensorflow as tf
# 定义输入和参数
# 用placeholder实现输入自定义(sess.run中喂多组数据)None表示未知
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)
# 用会话计算结果
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
# 字典,喂入多组特征
print("y in tf05forward2 is:\n", sess.run(y, feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}))
print("w1:", sess.run(w1))
print("w2:", sess.run(w2))
运行结果
前向传播就到这里了
更多文章:Tensorflow 笔记
- 本笔记不允许任何个人和组织转载
TensorFlow笔记-04-神经网络的实现过程,前向传播的更多相关文章
- 20180929 北京大学 人工智能实践:Tensorflow笔记04
20180929 北京大学 人工智能实践:Tensorflow笔记03(2018-09-30 00:01)
- 玩转Spring全家桶笔记 04 Spring的事务抽象、事务传播特性、编程式事务、申明式事务
1.Spring 的事务抽象 Spring提供了一致的事务模型 JDBC/Hibernate/Mybatis 操作数据 DataSource/JTA 事务 2.事务抽象的核心接口 PlatformTr ...
- Tensorflow 笔记
TensorFlow笔记-08-过拟合,正则化,matplotlib 区分红蓝点 TensorFlow笔记-07-神经网络优化-学习率,滑动平均 TensorFlow笔记-06-神经网络优化-损失函数 ...
- TensorFlow笔记-01-开篇概述
人工智能实践:TensorFlow笔记-01-开篇概述 从今天开始,从零开始学习TensorFlow,有相同兴趣的同志,可以互相学习笔记,本篇是开篇介绍 Tensorflow,已经人工智能领域的一些名 ...
- Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股
第一讲:人工智能概述 第三讲:Tensorflow框架 前向传播: 反向传播: 总的代码: #coding:utf-8 #1.导入模块,生成模拟数据集 import t ...
- TensorFlow笔记-05-反向传播,搭建神经网络的八股
TensorFlow笔记-05-反向传播,搭建神经网络的八股 反向传播 反向传播: 训练模型参数,在所有参数上用梯度下降,使用神经网络模型在训练数据上的损失函数最小 损失函数:(loss) 计算得到的 ...
- tensorflow学习笔记(1)-基本语法和前向传播
tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程. 图中的constant是个常量 计 ...
- TensorFlow学习笔记——深层神经网络的整理
维基百科对深度学习的精确定义为“一类通过多层非线性变换对高复杂性数据建模算法的合集”.因为深层神经网络是实现“多层非线性变换”最常用的一种方法,所以在实际中可以认为深度学习就是深度神经网络的代名词.从 ...
- Tensorflow笔记——神经网络图像识别(四)搭建模块化的神经网络八股(正则化,指数衰减学习率,滑动平均等优化)
实战案例: 数据X[x0,x1]为正太分布随机点, 标注Y_,当x0*x0+x1*x1<2时,y_=1(红),否则y_=0(蓝) 建立三个.py文件 1. generateds.py生成数据 ...
随机推荐
- Android动画(Animations)
动画类型Android的animation由四种类型组成 XML中 alpha : 渐变透明度动画效果 scale :渐变尺寸伸缩动画效果 translate : 画面转换位置移动动画效果 ro ...
- linux中tomcat内存溢出PermGen space
1.若是部署时候,一个tomcat下面项目越少越好,单独为一个项目配置tomcat(在客户给你充足的端口的情况下) 2.在维护的时候,若一个tomcat下放多个项目的话,这时候可以把所有jar包放在t ...
- LTE时代的定位技术:OTDOA,LPP,SUPL2.0
LTE时代的定位技术:OTDOA,LPP,SUPL2.0 移动定位技术的发展历程 如今智能手机已经在整个社会普及,数量众多的手机应用成为了人们生活当中不可或缺的一部分.越来越多的手机应用都用到了手机定 ...
- hdu3068 manacher模板题
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input输入有多组case,不超过120组,每组输入为 ...
- Leetcode 17
//狂练回溯,巧用备胎class Solution { public: vector<string> letterCombinations(string digits) { vector& ...
- 使用API失效供应商地址Demo(转)
原文地址 使用API失效供应商地址Demo DECLARE lv_return_status ) := NULL; ln_msg_count NUMBER; lv_errmsg ); lt_vend ...
- 此纳税人登记号已用于同一期间的交易方(交易方类型为 XXX 且交易方名称为 xxxx)。
When updated Supplier's tax informations , System occurs a error:'This tax registration number is al ...
- 使用iview-project 打包build报错,ERROR in xxxxx.cheunk.js from UglifyJs
一.iview-project 为iview官方推荐工程,一个基于iview的vue脚手架 github网址:https://github.com/iview/iview-project 废话不多说 ...
- (C#基础) ref 和out练习
对于C#中这两个关键字的用法,常常混淆,有点不清楚,今天又一次看到.遂把它们都记录下来,希望能有所用.这些都是他人写的,我只是搬过来一次,加深印象. 代码 using System; using Sy ...
- Flask初级(二)为flash创建路由,访问路径。
Project name :Flask_Plan 上一篇文章,我们创建了默认的flask项目,也可以运行起来. 但是只有一个首页,只显示一个hello world. 现在我们创建访问路由,也就是访问地 ...