TensorFlow学习笔记(未完待续)

news/2024/10/18 16:50:53/

文章目录

  • tf.Graph().as_default()
  • session
  • tensorflow.placeholder()
  • tf.summary

tf.Graph().as_default()

with tf.Graph().as_default():with tf.device('/gpu:'+str(GPU_INDEX)):

TensorFlow中所有计算都会被转化为计算图上的节点。是一个通过计算图的形式来表述计算的编程系统,每个计算都是计算图的一个节点,而节点之间的边描述了计算之间的依赖关系。

在TensorFlow中,系统会自动维护一个默认的计算图,通过tf.get_default_graph()函数可以获取当前默认的计算图。

如果没有显示创建一个图的话,系统提供一个全局默认的图,默认把所有的操作都添加到全局默认图中,配合with关键词使用,可以只把with快中的操作添加到默认图中。计算图可以通过tf.Graph.device函数来指定运行计算的设备。

如果要用GPU跑的话要确保安装的tensorflow是gpu版本的。可以通过一下方式来判断:

import tensorflow as tf
print(tf.test.is_gpu_available())
#true为有gpu版本

session

#  创建本地 session
with tf.Session() as sess:# ...# 创建远程 session
with tf.Session("grpc://example.org:2222"):# ...

session拥有和管理物理资源CPU、GPU、网络连接的功能,最典型的使用方式是作为上下文管理器使用。session 使用的可选参数主要有三个:target 用来控制 session 使用的硬件设备, 如果使用空值,那么这个 session 就只会使用本地的设备,如果使用 grpc:// URL,那么就会使用这台服务器控制的所有设备。graph 用来控制该 session 运行哪个计算图,如果为空,那么该 session 就只会使用当前的默认 Graph,如果使用多个计算图,就可以在这里指定。config 用来 指定一个 tf.ConfigProto 格式的 session 运行配置,比如说它里面包含的 allow_soft_placement 如果指定为 TRUE,那么 session 就会自动把不适合在 GPU 上运行的 OP 全部放到 CPU 上运行;cluster_def 是分布式运行时候需要指定的配置;gpu_options.allow_growth 设置会使得程序在开始时候逐步的增长 GPU 显存使用量,而不是一开始就最大化的使用所有显存。第一个和第三个配置是经常用到的。

tf.Session.run 是运行 OP 和获取 tensor 的值的主要方式,可以一次性传入多个 OP 和 tensor 给它,然后TensorFlow 会自动执行所有需要的 OP 来得到结果。

tensorflow.placeholder()

placeholder是占位符的意思,在tensorflow中类似于函数参数,在执行的时候再赋具体的值。
在这里插入图片描述
Tensorflow的设计理念称之为计算流图,在编写程序时,首先构筑整个系统的graph,代码并不会直接生效,这一点和python的其他数值计算库(如Numpy等)不同,graph为静态的,类似于docker中的镜像。然后,在实际的运行时,启动一个session,程序才会真正的运行。这样做的好处就是:避免反复地切换底层程序实际运行的上下文,tensorflow帮你优化整个系统的代码。我们知道,很多python程序的底层为C语言或者其他语言,执行一行脚本,就要切换一次,是有成本的,tensorflow通过计算流图的方式,帮你优化整个session需要执行的代码,还是很有优势的。placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,它只会分配必要的内存。等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据。

tf.summary

tensorboard作为一款可视化神奇,是学习tensorflow时模型训练以及参数可视化的法宝。而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在tensorboard显示。


http://www.ppmy.cn/news/1185608.html

相关文章

golang平滑重启库overseer实现原理

overseer主要完成了三部分功能: 1、连接的无损关闭,2、连接的平滑重启,3、文件变更的自动重启。 下面依次讲一下: 一、连接的无损关闭 golang官方的net包是不支持连接的无损关闭的,当主监听协程退出时,…

常用第三方库

Moment GTC(Greenwish Mean Time):格林威治时间,太阳时,精确到毫秒UTC(Universal Time Coodinated):世界协调时间,原子种计时,精确到纳秒 GTC和UTC都是以0时区作为标准时间戳:以UTC的1970-1-1 …

【Python机器学习】零基础掌握Nystroem内核近似特征

如何有效地处理大规模数据? 在当代社会,大数据已经渗透到各个领域,从社交网络到医疗健康,处理大量的数据已经成为一个普遍的问题。例如,在数字图像识别中,原始数据的维度非常高,处理起来非常费时。那么,有没有一种方法可以在保留原始数据特征的同时,降低数据维度,加…

什么是 CNN? 卷积神经网络? 怎么用 CNN 进行分类?(1)

先看卷积是啥,url: https://www.bilibili.com/video/BV1JX4y1K7Dr/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 下面这个式子就是卷积 看完了,感觉似懂非懂 下一个参考视频:https://www.y…

【Leetcode Sheet】Weekly Practice 13

Leetcode Test 1155 掷骰子等于目标和的方法数(10.24) 这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k 。 给定三个整数 n , k 和 target ,返回可能的方式(从总共 kn 种方式中)滚动骰子的数量,使正面朝上的数…

求二进制最低位1和最高位1的方法,以及反转二进制,复杂度O(1)

本文主要对三个二进制操作算法进行介绍,它们都是O(1)的。相对于暴力移位去计算,效率会高很多。这三个算法分别是 获取最低的1的比特位、获取最高1的比特位,反转二进制。 (1) 获取最小的1位 法1 int lowbit(int x){return x & -x; // …

用过的三种常用步进电机驱动电路

一、DRV8255 电流调节需要调整电位器,输入PWM、方向及使能信号即可控制,价格相对比较便宜 二、TB6600 调整细分数及电流即可驱动,驱动电流较大,接口电路光耦隔离 三、TMC2660 相对成本较高,可实现半流锁止、半流启动…

【递归、搜索与回溯算法】第七节.257. 二叉树的所有路径和46. 全排列

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:递归、搜索与回溯算法 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&am…