TensorFlow初学
TensorFlow初学
基本概念
1.激活函数和成本函数
激活函数(activation function):一般是非线性函数,就是每个神经元通过这个函数将原有的来自其他神经的输入做一个非线性变化,输出给下一层神经元。激活函数实现的非线性能力是前向传播很重要的一部分。
成本函数(cost function):损失值越小,结果越可靠。
2.有监督学习和无监督学习
有监督学习:训练数据有标记的学习。
无监督学习:有两种思路:一种是聚类,另一种是在成功时采用某种形式的激励制度,即强化学习。
此外还有半监督学习,其训练数据有一部分有标记,有一部分没有,有标记数据的标记不是确定的。
3.TensorFlow
TensorFlow支持卷积神经网络CNN和循环神经网络RNN,以及RNN的一个特例长短期记忆网络LSTM.
(1)环境配置(略)
(2)运行示例
import tensorflow as tf
hello=tf.constant('Hello')
sess=tf.Session()
print( sess.run(hello) )`
sess=tf.Session()
a=tf.constant(10)
b=tf.constant(22)
print(sess.run(a+b))
(3)可视化TensorFlow(略)
(4)TensorFlow基础知识
TensorFlow的编程理念
编程模式通常分为命令式编程和符号式编程。
符号式编程一般是先定义各种变量,然后建立一个数据流图,在数据流图中规定各个变量之间的计算关系,最后需要对数据流图进行编译,但此时的数据流图还是一个空壳,里面没有任何实际数据,只有把需要运算的输入放进去后,才能使整个模型中形成数据流,从而形成输出值。
如以下定义了一个操作,但是实际上并没有运行:
import tensorflow as tf
t=tf.add(8,9)
print(t)
Tensor("Add:0", shape=(), dtype=int32)
import tensorflow as tf
#创建图
a=tf.constant([1.0,2.0])
b=tf.constant([3.0,4.0])
c=a*b
#创建会话
sess=tf.Session()
#计算c
print(sess.run(c))
sess.close()
[ 3. 8.]
TensorFlow的编程模型
(具体可以参考https://www.sogou.com/link?url=DOb0bgH2eKh1ibpaMGjuy9T9X2Sf41yxhqGP_cUGwmZUu-0gQ4GHCibc-iPH6wf8pQcrxo3DZGxbd4MaiShHcg..)
下图讲述了其运行原理。图中包括输入(input)、塑形(reshape)、Relu层(隐藏层)、Logit层(输出层)、Softmax(计算输出结果中各个类别的概率分布)、交叉熵(cross entropy,度量两个概率分布,即原样本的概率分布和输出结果的概率分布之间的相似性)、梯度(gradient)、SGD训练(SGD Trainer,反向传播过程,依次更新,即bsm,Wsm,bh1,Wh1)等部分,是一个简单的回归模型。(code实现:https://blog.csdn.net/blwinner/article/details/81252344)
TensorFlow是指张量的流动,其数据流图是由节点(node)和边(edge)组成的有向无环图(directed acycline graph,DAG).
TensorFlow由tensor和flow两部分组成,tensor代表了数据流图中的边,而flow代表了数据流图中节点所做的操作。
- 边
TensoFlow的边有两种连接关系:数据依赖和控制依赖。其中实线边表示数据依赖,代表数据,即张量。任意维度的数据统称为张量。在机器学习算法中,张量在数据流图中从前往后流动一遍就完成了一次前向传播,而残差从后向前流动一次就完成了一次反向传播。
还有一种特殊的边,一般为虚线边,称为控制依赖,用于控制操作的运行,来确保happens-before关系,这类边上没有数据流过,但是源节点必须在目的节点开始执行前完成执行。
执行代码:tf.Graph.control_dependencies(control_inputs)
- 节点
图中的节点又称为算子,它代表一个操作(option,OP),一般用来表示施加的数学运算,也可以表示数据输入(feed in)的起点以及输出(push out)的终点,或者是I/O持久变量的终点。
算子支持表:
- 图
把操作任务描述成有向无环图。构建图的第一步是创建各个节点:
#创建一个常量运算操作,产生一个1*2矩阵
matrix1=tf.constant([[3.,3.]])
#创建另外一个常量运算操作,产生一个2*1矩阵
matrix2=tf.constant([[2.],[2.]])
#创建一个矩阵乘法运算,把matrix1和matrix2作为输入
#返回值product代表矩阵乘法的结果
product=tf.matmul(matrix1,matrix2)
print(product)
- 会话
启动图的第一步是创建一个Session对象。
在调用Session对象的run()方法来执行图时,传入一些tensor,这个过程叫做填充(feed),返回的结果类型根据输入的类型而定,这个过程叫取回(fetch).
会话主要有两个API接口:Extend和Run。Extend操作是在Graph中添加节点和边,Run操作是输入计算的节点和填充必要的数据后,进行运算并输出运算结果。
- 设备
GPU、CPU.
TensorFlow可以明确指定操作在哪个设备上执行:
with tf.Session() as sess:
#指定在第二个gpu上运行
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.], [2.]])
product = tf.matmul(matrix1, matrix2)
- 变量
变量是一种特殊的数据,在图中有固定的位置。
创建一个变量张量,使用tf.Variable()构造函数,这个构造函数需要一个初始值,初始值的形状和类型决定了这个变量的形状和类型:
#创建一个变量,初始化变量为标量0
state=tf.Variable(0,name="counter")
#创建一个常量张量
input1=tf.constant(3.0)
TensorFlow还提供了填充机制,可以在构建图时使用tf.placeholder()临时替代任意操作的张量,在调用Session对象的run()方法去执行图时,使用填充数据作为调用的参数,调用结束后,填充数据就消失。
input1=tf.placeholder(tf.float32)
input2=tf.placeholder(tf.float32)
output=tf.mul(input1,input2)
with tf.Session() as sess:
print(sess.run([output],feed_dict={input1:[7.],input2:[2.]}))
- 内核
TF中还有一个概念是kernel,kernel是operation在某种设备上的具体实现。TF的库通过注册机制来定义op和kernel,所以可以通过链接一个其他的库来进行kernel和op的扩展。
TensorFlow初学的更多相关文章
- TensorFlow初学教程(完整版)
1:你想要学习TensorFlow,首先你得安装Tensorflow,在你学习的时候你最好懂以下的知识: a:怎么用python编程: b:了解一些关于数组的知识: c:最理想的 ...
- 全方面讲解TensorFlow
任何曾经试图在 Python 中只利用 NumPy 编写神经网络代码的人都知道那是多么麻烦.编写一个简单的一层前馈网络的代码尚且需要 40 多行代码,当增加层数时,编写代码将会更加困难,执行时间也会更 ...
- 初学深度学习(TensorFlow框架的心得and经验总结)自用环境的总结
初学者的时间大部分浪费在了环境上了: 建议直接上Linux系统,我推荐国产的深度系统,deepin这几年一直在不断的发展,现在15.4已经很不错了 1,图形化界面很漂亮,内置正版crossover,并 ...
- 初学tensorflow遇到的Error——UnrecognizedFlagError: Unknown command line flag 'f'
最近在学习<tensorflow实战>时需要下载cifar10数据集,在cifar10目录下用到命令: import cifar10,cifar10_inputcifar10.maybe_ ...
- 【深度学习与TensorFlow 2.0】卷积神经网络(CNN)
注:在很长一段时间,MNIST数据集都是机器学习界很多分类算法的benchmark.初学深度学习,在这个数据集上训练一个有效的卷积神经网络就相当于学习编程的时候打印出一行“Hello World!”. ...
- 学习笔记TF045:人工智能、深度学习、TensorFlow、比赛、公司
人工智能,用计算机实现人类智能.机器通过大量训练数据训练,程序不断自我学习.修正训练模型.模型本质,一堆参数,描述业务特点.机器学习和深度学习(结合深度神经网络). 传统计算机器下棋,贪婪算法,Alp ...
- 【TensorFlow/简单网络】MNIST数据集-softmax、全连接神经网络,卷积神经网络模型
初学tensorflow,参考了以下几篇博客: soft模型 tensorflow构建全连接神经网络 tensorflow构建卷积神经网络 tensorflow构建卷积神经网络 tensorflow构 ...
- 初次接触tensorflow
要确保已经明白神经网络和卷积神经网络的原理.如果不明白,先学习参考资料1.tensorflow中有很多api,可以分成2大类.1类是比较低层的api(tf.train),叫TensorFlow Cor ...
- 运用tensorflow写的第一个神经网络
因为实训课要用LSTM+attention机制在钢材领域做一个关系抽取.作为仅仅只学过一点深度学习网络的小白在b站上学习了RNN,LSTM的一些理论知识. 但只懂得一些理论知识是无法完成关系抽取的任务 ...
随机推荐
- Pyhhon中一些常见的字符串操作.
可变变量:list, 字典 不可变变量:元祖,字符串 字符串的操作(去掉空格, 切片, 查找, 连接, 分割, 转换首字母大写, 转换字母大小写, 判断是否是数字字母, 成员运算符(in / not ...
- java 常用API 包装 练习
package com.oracel.demo01; import java.util.Random; public class Swzy { public static void main(Stri ...
- JS 100元购物卡,牙刷5元,香皂2元、洗发水15元 100元正好花完有多少种可能
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- PowerDesigner工具
PowerDesigner是一款数据库设计与建模工具,开发人员可以在上面设计表结构,而不用一开始就创建数据库中的表,因为设计阶段数据库表结构会经常变动.设计完后可以导出创建所有表的SQL脚本,直接执行 ...
- 【JavaScript框架封装】实现一个类似于JQuery的CSS样式框架的封装
// CSS 样式框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法)[只要是需要使用到this获取到的元素集合这个变量的时候, ...
- ORM框架 SQLAlchemy
什么是ORM 使用关系对象映射进行数据库操作. 将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. 分类 -DB first 手动创建数据库和表,自动生成类 -code first 手动 ...
- ongl表达式中得到对象,调用对象方法(OA项目权限显示模块)
在用户是否拥有某项权限的问题 是这样解决的: 用户登录之后 登录信息是保存在session域中的 通过el表达式可得到登录的对象信息 那么怎样判断用户是否拥有某项权限呢 ?如果没有上图中的判断 ...
- CodeForcesGym 100548G The Problem to Slow Down You
The Problem to Slow Down You Time Limit: 20000ms Memory Limit: 524288KB This problem will be judged ...
- CDH版本hadoop2.6伪分布式安装
1.基础环境配置 主机名 IP地址 角色 Hadoop用户 centos05 192.168.48.105 NameNode.ResourceManager.SecondaryNameNode. Da ...
- [SharePoint2010开发入门经典]创建你的第一个SPS2010程序
本章概要: 1.创建一个解决方案,使他能读写数据从列表中,使用服务器端对象模型和可视的web部件 2.使用VS2010构建部署解决方案 3.使用图标web部件渲染列表数据 4.在一个解决方案中集成不同 ...