TensorFlow——tensorflow编程基础
0.tensorflow中的模型运行基础
tensorflow的运行机制属于定义和运行相分离,在操作层面可以抽象成两种:模型构建和模型运行。
在模型构建中的常见概念:
张量(tensor):数据,即某一类型的多为数组
变量(Variable):常用于定义模型中的参数,是通过不断训练得到的值
占位符(placeholder):输入变量的载体,也可以理解成模型的参数
图中的节点操作(operation,op):即一个op获得0个或多个tensor,执行得到,输出得到的tensor
计算图代表一个计算任务,在模型运行的环节中,图会在会话中被启动,session将图中的op分发到CPU或GPU子类的设备上,同时提供执行op的方。这些方法执行后,将产生tensor返回,在python中返回的是numpy的ndarray对象,在C/C++中返回的tensor是TensorFlow::Tensor实例
session与图交互过程中还定义了下面两种数据流向机制:
注入机制(feed):通过占位符模型传入数据
取回机制(fetch):从模型中得到结果
import tensorflow as tf hello = tf.constant('hello world') sess = tf.Session() print(sess.run(hello)) sess.close()
建立session,在session中输出hello,world,通过run方法得到hello的值,下面使用with session的作用
# /usr/bin/python # -*- encoding:utf-8 -*- import tensorflow as tf import numpy as np a = tf.constant(4) b = tf.constant(2) with tf.Session() as sess: print("相加: a + b ", sess.run(a+b)) print("相乘: a * b ", sess.run(a*b))
with session的用法是最常见的,它使用python中的with语法,即当程序结束时,会自动关闭session,不需要写close。
下面演示注入机制,使用注入机制,将具体的实参注入到相应的placeholder中。feed只在调用的方法内有效,方法结束后feed就会自动消失。
import tensorflow as tf import numpy as np a = tf.placeholder(tf.int32) b = tf.placeholder(tf.int32) add = tf.add(a, b) mul = tf.multiply(a, b) with tf.Session() as sess: print("相加: ", sess.run(add, feed_dict={a:3, b:2})) print("相乘: ", sess.run(mul, feed_dict={a:4, b:6}))
构建session的其他方法
交互式的session方式
通常是在交互的环境下使用,具体的用法和with session类似,代码如下:
sess = tf.InteractiveSession()
Supervisor方式:这种方法可能会更高级些,使用的时候也更加的复杂,可以自动的管理session中的具体任务,比如,载入/载出检查点文件,写入tensorboard等,另外该方式还支持分布式的训练任务部署。
- tensorflow编程基础之图的基本操作
- tensorflow编程基础之编程模型
- DeepLearning | Tensorflow编程基础:Session、Constant、Variable、Tensor、Placeholder、OP
- tensorflow编程基础
- tensorflow编程基础之共享变量
- Tensorflow编程基础之Mnist手写识别实验+关于cross_entropy的理解
- Tensorflow编程基础
- 第一阶段-入门详细图文讲解tensorflow1.4 -(三)TensorFlow 编程基础知识
- 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)
- Java基础编程1—九九乘法口诀
- 一些基础:VC编程经验和错误
- 跟着姜少学Java基础编程之一:数据类型
- 黑马程序员之C#编程基础学习笔记:提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁,则提示用户是否继续查看(yes,no),如果输入的是ye
- 黑马程序员_毕向东JAVA基础_网络编程(概述&UDP&TCP)
- bat编程基础(二)
- Java GUI编程的基础知识
- Python基础——网络编程
- 一个小白从零基础自学Android编程笔记之如何切换另一个活动(窗口)
- Java基础-网络编程之UDP编程
- 12:变幻的矩阵( 1.8编程基础之多维数组)