程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

yield(0)

面向对象(0)

标签  

字典(0)

列表(0)

日期归档  

Tensorflow基础(一)之常量和运行的举例

发布于2019-08-20 15:01     阅读(1112)     评论(0)     点赞(18)     收藏(3)


目录

函数注解

from __future__ import print_function

os.path.dirname(path)

os.path.abspath(__file__)

tf.constant ()

tf.Session()

tf.summary.FileWriter()

os.path.expanduser(path)

sess.run()

sess.close()/writer.close()

完整代码


本部分所有代码,皆来自于GitHub超过3300星的tensorflow教程:

https://github.com/machinelearningmindset/TensorFlow-Course 

我借用代码,来记录用到的tensorflow里面包含的函数。

函数注解

首先是导入需要的必要的库:

  1. from __future__ import print_function
  2. import tensorflow as tf
  3. import os

from __future__ import print_function

如果某个python版本中出现了某个新的功能特性,而且这个特性和当前版本中使用的不兼容,也就是说,它在该python版本中不是语言标准,那么我如果想要使用的话就需要从future模块导入。剩下的两个就没啥可说的了导入tensorflow和os(os库是Python标准库,包含几百个函数,常用路径操作、进程管理、环境参数等几类)两个库。

接着用os导入一个库。

os.path.dirname(path)

功能:将path里包含的文件名去掉,只返回对应的路径。

os.path.abspath(__file__)

返回当前所在文件(就是指当前程序的.py文件)的绝对路径(包括文件名)

这里就是将当前.py文件所在的路径给提取出来再添加上在相同路径下的logs文件夹,就可以自动访问logs文件夹下的文件了。

log_dir = os.path.dirname(os.path.abspath(__file__)) + '/logs'

tf.constant ()

tensorflow框架下的,生成常量,用来生成tensor。

比如,这样就可以生成一个2*3的张量

a = tf.constant([[1, 2, 3], [4, 5, 6]])

 下面,是生成一个存有字符串的常量,并赋值给welcome。

welcome = tf.constant('Welcome to TensorFlow world!')

接下来就是tensorflow的主要部分了:

tf.Session()

首先要说的是tensorflow里的Session的概念,这就不得不要把话绕的远了些,就得先总结下Tensorflow整个框架的系统架构:

 TensorFlow设计十分精巧,从图上也可以看出整个框架是基于分层和模块化的设计思想进行开发的。

其中,

1.整个框架以C API为界,分为前端和后端两大部分。

2.前端:提供编程模型,多语言的接口支持,比如Python Java C++等。通过C API建立前后端的连接,后面详细讲解。
           3.后端:提供运行环境,完成计算图的执行。进一步分为4层
           4.运行时:分为分布式运行时和本地运行时,负责计算图的接收,构造,编排等。 
           5.计算层:提供各op算子的内核实现,例如conv2d, relu等 
           6.通信层:实现组件间数据通信,基于GRPC和RDMA两种通信方式
           7.设备层:提供多种异构设备的支持,如CPU GPU TPU FPGA等

TensorFlow的一大特点是,图的构造和执行相分离。用户添加完算子,构建好整图后,才开始进行训练和执行,也就是图的执行。其中就包括了:

图构建:用户在client中基于TensorFlow的多语言编程接口,添加算子,完成计算图的构造。

图传递:client开启session,通过它建立和master之间的连接。执行session.run()时,将构造好的graph序列化为graphDef后,以protobuf的格式传递给master。


                                                                                   ————引自:https://blog.csdn.net/u013510838/article/details/84103503  

总之就一个意思,当把tensor给搭建好之后,要开启session才可以开始flow,这估计也是tensorflow的意思吧,个人感觉session就是一个阀门水龙头,当把架构给搭建好之后,打开水龙头,往架构里面注水,架构所搭建的东西才能“活”起来。在许多tensorflow的程序中基本上经常能看到:

  1. with tf.Session() as sess:
  2. sess.close()

这也可以算是固定的格式吧!

接下来说里面的东西,

tf.summary.FileWriter()

这个`FileWriter`类提供了一个机制,能够在指定的目录下面创建event文件,然后将缓存中的summaries写入到event文件中去。该类可以异步的更新(updates asynchronously)events文件的内容。 这个异步机制能够让程序在训练循环过程中调用add方法直接往文件中添加数据而不用阻塞循环训练过程导致训练速度减慢。

os.path.expanduser(path)

使用用户的主目录path替换'-user‘格式的路径名称

sess.run()

TensorFlow中的语句不会立即执行;而是等到开启会话session的时候,才会执行session.run()中的语句。如果run中涉及到其他的节点,也会执行到。而且,所有的节点都是可以视为运算操作op或tensor都可以用run来进行执行。

sess.close()/writer.close()

            配套的,记得close。

  1. with tf.Session() as sess:
  2. writer = tf.summary.FileWriter(os.path.expanduser(log_dir), sess.graph)
  3. print("output: ", sess.run(welcome))
  4. # Closing the writer.
  5. writer.close()
  6. sess.close()

 

完整代码

  1. #####################################################
  2. ########## Welcome to TensorFlow World ##############
  3. #####################################################
  4. # The tutorials in this section is just a start for going into TensorFlow world.
  5. # The TensorFlow flags are used for having a more user friendly environment.
  6. from __future__ import print_function
  7. import tensorflow as tf
  8. import os
  9. ######################################
  10. ######### Necessary Flags ############
  11. # ####################################
  12. log_dir = os.path.dirname(os.path.abspath(__file__)) + '/logs'
  13. ################################################
  14. ################# handling errors!##############
  15. ################################################
  16. # Defining some sentence!
  17. welcome = tf.constant('Welcome to TensorFlow world!')
  18. # Run the session
  19. with tf.Session() as sess:
  20. writer = tf.summary.FileWriter(os.path.expanduser(log_dir), sess.graph)
  21. print("output: ", sess.run(welcome))
  22. # Closing the writer.
  23. writer.close()
  24. sess.close()

 



所属网站分类: 技术文章 > 博客

作者:goodbody

链接:https://www.pythonheidong.com/blog/article/49452/cb9717e79448ff42e063/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)