tensorflow随记 #1 基本概念 Graph图、Session会话、Tensor张量、Variables参数、Operation操作、feed&fetch

基本概念

几句定理,按照该思路可以较为形象的构建网络模型

  • G r a p h Graph Graph 表示 计算
  • S e s s i o n Session Session执行 G r a p h Graph Graph
  • T e n s o r Tensor Tensor 表示 数据
  • V a r i a b l e s Variables Variables 维护 状态
  • f e e d feed feed f e t c h fetch fetch 传送 数据
  • O p e r a t i o n Operation Operation 作为 节点

简单解释

可以通过一个简单操作对定理进行解释

比如说,我们需要对两个数进行一个加法操作,其中第一个加数需要自己输入。
显然,可以通过下图 G r a p h Graph Graph 表示这个计算

num1: 2
add: 2+?
num2: ?

按照定理,我们用 T e n s o r Tensor Tensor 表示数据,并用 V a r i a b l e s Variables Variables 维护状态*,由于是一维数据,也就是标量,所以可以这么描述 n u m 1 num1 num1

num1 = tf.Variables(2)

那么,作为要输入的 n u m 2 num2 num2,则需要用到传输数据的 f e e d feed feed 操作,在 f e e d feed feed 之前,需要对 n u m 2 num2 num2 进行一个定义,并用 p l a c e h o l d e r placeholder placeholder 进行占位,这里是整型,所以 d t y p e = i n t 32 dtype=int32 dtype=int32

num2 = tf.placeholder("int32")

同样,作为节点的两个 n u m num num 同样也是两个 O p e r a t i o n Operation Operation,可以简单地理解为赋值操作,作为最好理解的 a d d add add o p e r a t i o n operation operation 节点,则可以这么描述

add = tf.add(num1, num2)

不难理解,这些节点中都保存着对应的数据, n u m 1 → 2 num1 → 2 num12 n u m 2 → 4 num2 → 4 num24 a d d → 6 add → 6 add6,这些都数值可以通过 f e t c h fetch fetch获得

经过上述操作,已经完成了图(计算)的构建,现在需要在 S e s s i o n Session Session 中执行计算
首先需要建立一个 S e s s i o n Session Session,有两种建立方式,和文件读取一样

sess = tf.Session()
# todo: 
sess.close()
with tf.Session() as sess:
	# todo:

这里如果是tensorflow2,则需要

sess = tf.compat.v1.Session()

在建立了 S e s s i o n Session Session 后,需要有状态初始化的操作,使得 n u m 1 = 2 , n u m 2 = 4 num1 = 2, num2 = 4 num1=2,num2=4

init = tf.global_variables_initializer()

S e s s i o n Session Session 中,对节点的运行,通过 r u n run run 函数来进行,进行后自动返回可以 f e t c h fetch fetch 的数值,其中,对于 a d d add add 操作中,由于涉及使用了占位符的 n u m 2 num2 num2,需要使用 f e e d feed feed 操作对其进行赋值,这里用字典的形式进行操作。

sess.run(init)
sum = sess.run(add, feed_dict={num2: 4})
# sum = 6

这里放一下完整的代码

import tensorflow as tf

num1 = tf.Variable(2)
num2 = tf.placholder("int32")

add = tf.add(num1, num2)
init = tf.global_variables_initializer()

with tf.Session() as sess:
	sess.run(init)
	sum = sess.run(add, feed_dict={num2: 4})
	print(sum)

*如果不需要对 n u m 1 num1 num1 进行修改,就不需要维护状态了,只需要表示数据,所以也可以用

num1 = tf.constant(2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值