TensorFlow(1)-模型相关基础概念

TensorFlow-1

  • 1.Graph对象
  • 2.Session对象
  • 3.Variabels变量
  • 4. placeholders与feed_dict
  • 5. tf.train.Saver() 模型参数保存、加载

Tensorflow 中文官网教程–2.0版本的官方教程
TensorFlow教程:TensorFlow快速入门教程(非常详细)
pytorch Vs tensorflow

Tensorflow来源: 由较低级别的符号计算库(例如: Theano) 和 较高级别的网络规范库(例如:Blocks 和 Lasagne)组合而成。

TensorFlow的劣势: 1.x API混乱冗余;2.x重点关注tf.keras,弃用其他API。但是1.x 和2.x 的兼容性堪忧。

TensorFlow的计算方式: 创建数据流图,将数据放入数据流图中计算。数据流图中的节点表示数学操作(op:operation),连线表示tensor 流动的通道。每个节点获得若干个tensor,执行计算后产生若干个tensor。数据流图在会话(Session)中启动运行。

import tensorflow as tf

1.Graph对象

计算图–可以认为是详细的流程图,其包括每一步的操作[op]和变量名字。
显式构建,graph构造函数无需接受任何参数

g = tf.Graph()
with g.as_default():#创建一些OP;它们将被添加到Graph的对象g中a = tf.mul(2,3)

隐式构建,当Tensorflow库被加载时,它会自动的创建一个Graph对象,并将 其作为默认的数据流图。获取默认数据流图具柄:

default_graph = tf.get_default_graph

2.Session对象

session负责分配资源,计算operation, 得出结果。 Session构造函数可接受3个参数。

  1. target 指定执行引擎,默认值为空字符串。在分布式训练中,用于连接不同的tf.train.server.
  2. graph 指定将要加载的Graph 对象, 默认值None(使用默认数据流图)。
  3. config 指定session 对象的配置参数,例如CPU、GPU使用数目、数据流图优化参数、日志选项等。

使用run 来运行相应的计算操作,得到fetches中的张量值。tf.Session.run()函数返回值为fetches指定的执行结果。如果fetches是一个元素就返回一个值;若fetches是一个list,则返回list的值,若fetches是一个字典类型,则返回和fetches同keys的字典。

session.run( fetches, feed_dict=None, options=None, run_metadata=None)

Session的开启涉及具体运算,比较消耗资源。在使用结束后,建议关闭Session。
-> 手动关闭关闭session

a = tf.constant(1, dtype=tf.int8)
b = tf.constant(2, dtype=tf.int8)
res= a + b
sess = tf.Session()             # 加载默认数据流图
sess.run(res)					# 执行运算
sess.close()					# 手动关闭session

->自动关闭session 使用with来限定session 的作用范围

a = tf.constant(1, dtype=tf.int8)
b = tf.constant(2, dtype=tf.int8)
res= a + b
with tf.Session() as sess:      # 运算结束后session自动关闭sess.run(res)               # 执行运算res.eval()                  # tensor eval() 方法和 sess.run(res)效果一致

参考文档:TensorFlow中Session的使用

3.Variabels变量

Variabels 类型的参数可通过梯度下降更新、训练。必须明确的初始化而且可以通过Saver保存到磁盘上。
定义Variabels 类型的参数: 使用tf.Variable(tensor)封装相应的tensor

weights  = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name="weights")
biases  = tf.Variable(tf.zeros([200]), name="biases")

在graph 中若含有variabels 类型的变量,必须使用在session中显式调用 初始化函数。
-> 全量variable 初始化 tf.global_variables_initializer()

# 含有tf.Variable的环境下,因为tf中建立的变量是没有初始化的,
# 在debug时还不是一个tensor,而是一个Variable变量类型
tensor = tf.Variable(tf.random_normal(shape=[10]))
init = tf.global_variables_initializer()
with tf.Session() as sess:sess.run(init)  # initialization variablesprint(sess.run(tensor))

-> 部分variable 初始化 tf.variables_initializer()

var1 = tf.Variable(0,name="initialize_me")
var2 = tf.Variable(1,name="no_initialization")
init = tf.variables_initializer([var1],name="init_var1")
with tf.Session() as sess:sess.run(init)

4. placeholders与feed_dict

tf.placeholder 创建占位符号,比如模型的输入数据,其只有在训练与预测时才会有值。赋值时,使用feed_dict 进行赋值操作。

import numpy as np 
x = tf.placeholder(tf.float32, shape=(10, 10))         # 10行10列
y = tf.matmul(x, x) # 矩阵乘
with tf.Session() as sess:  #print(sess.run(y))  # ERROR: 此处x还没有赋值.  rand_array = np.random.rand(1024, 1024)  print(sess.run(y, feed_dict={x: rand_array}))  # Will succeed.  

5. tf.train.Saver() 模型参数保存、加载

v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
init = tf.initialize_all_variables()
# Add ops to save and restore all the variables.
saver = tf.train.Saver()# Later, launch the model, initialize the variables, do some work, save the variables to disk.
with tf.Session() as sess:sess.run(init)save_path = saver.save(sess, "/tmp/model.ckpt")print "Model saved in file: ", save_path

模型恢复时,variable 不需要初始化

v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
saver = tf.train.Saver()# Later, launch the model, use the saver to restore variables from disk, and
# do some work with the model.
with tf.Session() as sess:saver.restore(sess, "/tmp/model.ckpt")print "Model restored."

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

memcache的使用入门C++代码

下载源码编译,memcached就是生成的主程序,启动可指定端口,memcached作为server端,依然是我们熟悉的cs模式,使用两个client一个setkey,一个getkey一百万个做测试。 ./memcached -d -m 300 -p 11211 -u root…

leetcode78 子集

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 思路&…

Fiddler抓包工具使用

先下载Fiddler 欢迎关注我的新微信公众号 ipgame,有什么问题可以提供交流的平台,欢迎大家讨论。 电脑最好是笔记本,这样能和手机保持统一局域网内;其他不多说,直接说步骤了。 一.对PC(笔记本&#xff0…

Tensorboard--模型可视化工具

Tensorboard1.tensorboard in tensorflow1.1 tensorboard的启动过程1.2 tf.summary 可视化类型1.3 tf.summary 使用demo2.tensorboard in pytorch2.1 SummaryWriter 使用demo12.2 tSummaryWriter 使用demo22.3 tensorboard 数据再读取tensorboard in tensorflow :te…

opencv findContours 报错_acrt_first_block == header

报错_acrt_first_block header 之前一直使用OpenCV3.3VS2015 void AOIAlgorithm::findUnits(Mat& blkGray, vector<vector<cv::Point>> & blkContours) {Mat blkOBW;blur(blkGray, blkGray, cv::Size(5, 5));threshold(blkGray, blkOBW, 0, 255, CV_THR…

TensorFlow(2)-训练数据载入

tensorflow 训练数据载入1. tf.data.Dataset2. dataset 创建数据集的方式2.1 tf.data.Dataset.from_tensor_slices()2.2 tf.data.TextLineDataset()2.3 tf.data.FixedLengthRecordDataset()2.4 tf.data.TFRecordDataset()3. dateset 迭代操作iterator3.1 make_one_shot_iterato…

leetcode66. 加一

给定一个由整数组成的非空数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入…

设备硬件加密方法

在机器视觉或者一些传统制造业行业里经常牵扯到软件加密算法,或者一些简单的加密,比如相机绑定,或者USB接口绑定之类的,那么针对这些硬件设备绑定加密方式,我这里简单的提供一个方法来实现: 方法很简单,从设备管理器里查找关心的USB设备,对比PID,VID和全球唯一标识GU…

addr2line 和 tombstone问题分析

做安卓开发的同学对于tombstone问题应该是很熟悉了,但是对于如何排查和分析值得总结和整理的,这篇文章对入门安卓开发的技术来说是个入门指导,同时对安卓开发的中高级开发也有借鉴。 首先我们来说下什么是tombstone : 当一个动态库(native 程序)开始执行时,系统会注册…

TensorFlow(3)-与训练相关的操作

与训练相关的操作0 gpu版本的tensor flow安装1. tf.control_dependencies(update_ops)0 gpu版本的tensor flow安装 cuda10.2 conda create -n py27 python2.7 conda activate py27 pip install tensorflow1.14.0 验证 gpu版本的tensor可用 import tensorflow as tf print(tf.t…

leetcode14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar",&quo…

Android在子线程里使用Toast报错Can't toast on a thread that has not called Looper.prepare()

在接android SDK的时候有时候为了方便debug调试查看&#xff0c;通过Toast输出相关信息&#xff0c; 实际上这个是在子线程中输出的&#xff0c;在logcat里查看有如下报错java.lang.RuntimeException: Cant toast on a thread that has not called Looper.prepare()。 解决办法…

虚拟机安装windows2012和虚拟机安装国产系统deepin

虚拟机安装windows2012和虚拟机安装国产系统deepin 一.安装windows20121.安装VMWare虚拟机2.1.注意点一&#xff1a;VMWare虚拟网卡2.2.注意点二&#xff1a;配置虚拟网络编辑器3.安装配置Windows Server 2012 R2 二.虚拟机安装deepin1.deepin官网下载ios镜像2.deepin下载合适的…

leetcode876 链表中间的结点

给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;[1,2,3,4,5] 输出&#xff1a;此列表中的结点 3 (序列化形式&#xff1a;[3,4,5]) 返回的结点值为 3 。 …

TensorFlow(4)-TFRecord

TFRecord1. tf.train.Example1.1 tfrecord 数据范式转化1.2 demo 数据集构建2. TFRecord 读写2.1 写入1-tf.io.TFRecordWriter()2.3 读取-tf.data.TFRecordDataset()2.3 data -> dataset -> 存储-tf.data.experimental.TFRecordWriter()tfrecord 用于存储二进制序列数据的…

Playfab开发(一)如何调用PlayFab接口

本人从事海外游戏制作和发行,参与了不少海外研发团队studio的项目,这里我将个人接触到的一些使用Playfab开发的项目心得分享给大家。 PlayFab简介 playfab是一家主要为游戏开发人员提供游戏开发和管理的跨平台工具及服务的公司, PlayFab正在构建当今游戏所需的所有基于云的…

PlayFab(二)如何通过Demo应用来进一步熟悉Playfab

有时候刚开始接触新的平台会两眼一麻黑,不过这个文章希望能给读者一些启示,Playfab默认会给开发者提供一个应用,这里我暂且叫他”我的游戏“; 我通过官网提供的DEMO测试地址: https://www.vanguardoutrider.com/#/ 来为该应用配置服务器。 如果你是第一次进入这个页面想为…

leetcode718 最长重复子数组

给两个整数数组 A 和 B &#xff0c;返回两个数组中公共的、长度最长的子数组的长度。 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。 说明: 1 < len(A), len(B) < 1000 0 < A[i], B[i] < 100 思路&#xf…

PaperNotes(20)-TGAN-DeliGAN

GAN的文章2篇1.从RS-GAN说起2.TGANAbstract1 Reviews of GANs2.3 Relate to Turing Test3 Related Works4 Experiments4.1 Design of Discriminator5.Conclusion3 DeliGANAbstract1. Introduction2. Related Work3.GAN4.本文方法5.实验5.1. Modified Inception Score5.2. Toy D…

ubuntu apache配置负载均衡篇(一)

首先下载apache2服务器 apt-get install apache2 使得代理生效: a2enmod proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http 修改配置 sudo vi /etc/apache2/mods-enabled/proxy.conf ProxyRequests Off <Proxy *> Order deny,allow Deny …