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编程基础的更多相关文章

  1. 第六节,TensorFlow编程基础案例-保存和恢复模型(中)

    在我们使用TensorFlow的时候,有时候需要训练一个比较复杂的网络,比如后面的AlexNet,ResNet,GoogleNet等等,由于训练这些网络花费的时间比较长,因此我们需要保存模型的参数. ...

  2. 第五节,TensorFlow编程基础案例-session使用(上)

    在第一节中我们已经介绍了一些TensorFlow的编程技巧;第一节,TensorFlow基本用法,但是内容过于偏少,对于TensorFlow的讲解并不多,这一节对之前的内容进行补充,并更加深入了解讲解 ...

  3. Tensorflow学习笔记----基础(3)

    目录: 一.TensorFlow的系统架构 二.TensorFlow的设计理念 三.TensorFlow的运行流程 四.TensorFlow的编程模型:边.节点.图.设备.变量.变量初始化.内核 五. ...

  4. TensorFlow深度学习基础与应用实战高清视频教程

    TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以 ...

  5. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  6. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  7. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

  8. T-Sql编程基础

    T-sql编程 入门小游戏 T-sql编程基础,包括声明变量,if判断,while循环,以及使用一些基本函数. 记得在学校的时候,写过一个二人对打的文字输出游戏. 上代码 alter proc usp ...

  9. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  10. 如何夯实(Java)编程基础,并深入学习和提高

    如何夯实(Java)编程基础,并深入学习和提高? 240赞同反对,不会显示你的姓名 匿名用户 240 人赞同 多学习...网上自学的学习网站很多,见以下榜单~一.汇总榜单: 公开课_学习网站导航 收录 ...

随机推荐

  1. Python--day67--CBV和FBV、Request对象及上传文件示例

    1,CBV版添加新的出版社 views.py文件 urls.py文件 2,Request对象: request对象 当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpReques ...

  2. H3C NAPT配置举例

  3. Django入门7--博客撰写页面开发

  4. P1099 双连击

    题目描述 我们假设一个二位整数 \(N(10 \le N \le 99)\) ,它的十位上的数字是 \(A\) ,个位上的数字是 \(B\) ,如果 \(A\) 和 \(B\) 的比例关系满足 \(A ...

  5. H3C Network命令详解

  6. tp框架使用心得(六)——分页查询

    http://baijiahao.baidu.com/s?id=1578482537511010805&wfr=spider&for=pc 在用thinkphp中,对于新手手册中还是有 ...

  7. P1091 剧院广场

    题目描述 柏林首都的剧院广场呈长方形,面积为 \(n \times m\) 平方米.在这座城市的周年纪念日之际,人们决定用方形花岗岩石板铺设广场.每块石板的大小都是 \(a \times a\) . ...

  8. 【23.68%】【hdu 2871】Memory Control

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  9. API自动化测试指南

    我相信自动化技能已经成为高级测试工程师总体技能的标配.敏捷和持续测试破坏了传统的测试自动化实践,导致测试工程师重新考虑自动化的完成方式.当今的自动化工程师需要在GUI的下方深入到API级别完成软件质量 ...

  10. 阿里云“网红"运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”:他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路:他爱好清奇,练就了能在 20 秒 ...