TensorFlow(1)-- 图、会话

tensorflow现在已经更新到2.0,学习时还是使用的1.0的版本,之后更新的所有代码都是版本1.0上写的。

环境:tensorflow1.0、python3.6

tensorflow数据流图:

import tensorflow as tf

tensorflow-图

  • 图默认已经注册,一组表示tf.Openration计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象

  • 获取调用:

  1. tf.get_default_graph() 
  2. op、sess或者tensor的graph属性

图的创建

  • tf.Graph()

  • 使用新创建的图 

import tensorflow as tf

g = tf.Graph()
with g.as_default():
    a = tf.constant(1.0)
    assert a.graph is g

 tensorflow-会话

  • tf.Session()    运行tensorflow操作图的类,使用默认注册的图(可以指定运行图)

  • 会话资源    会话可能会有很多资源,如 tf.Variable, tf.QueueBase 和 tf.ReaderBase,会话结束后需要进行资源释放

  1. sess = tf.Session()      sess.run(...)     sess.close()
  2. 使用上下文管理器    with tf.Session() as sess:  sess.run(...)

会话的run()方法

run(fetches, feed_dict=None, graph=None)

  • 运行op和计算tensor,嵌套列表,元祖,nameduple, dict或OrereddDict(重载的运算符也能运行)
  • feed_dict 允许调用者覆盖图中指定张量的值,提供给placeholder使用
  • 返回值异常
  1. RuntimeError:如果它Session处于无效状态(例如已关闭)
  2. TypeError:如果feed_dict键是不合格的类型
  3. ValueError:如果fetches或feed_dict键无效或引用Tensor不存在

tensorflow  feed操作

  • 意义:在程序执行的时候不确定输入的是什么,提前“占个坑”
  • 语法:placeholder提供占位符,run时候通过feed_dict指定参数
import tensorflow as tf

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.add(input1, input2)
with tf.Session() as sess:
    print(sess.run([output], feed_dict={input1: 10.0, input2: 20.0}))

 

代码示例:

# -*- coding: utf-8 -*-
import tensorflow as tf
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'  # 忽略警告

# 实现一个简单的加法操作  使用tensorflow的api实现线性回归等等
# 定义的所有tensorflow的API都是op
# op有的是装有数据内容的op
# 打印的就是op当中的tensor

# 新创建一个图
# 在不同的图当中做不同的事情
g = tf.Graph()

with g.as_default():
    c = tf.constant(10.0)
    d = tf.constant(11.0)
    sum1 = tf.add(c, d)
    print(c, d, sum1)

print(g)

a = tf.constant(3.0)
b = tf.constant(4.0)
print(a, b)
# 定义加法
sum = tf.add(a, b)

# 获取图
gra = tf.get_default_graph()
print(gra)

# 通常做法
# sess = tf.Session()
# sess.run()
# sess.close()

# 上下文管理器
# tensorflow当中session会话,会话会掌握很多资源,默认开启的图,会话才可以使用这个图的资源
# 打印设备
# with tf.Session() as sess:
#     print(sess.run(sum))

# python定义变量
name1 = 2.0
cal = name1 + b
print(cal)
with tf.compat.v1.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
    # eval()是必须在会话的上下文环境运行, 作用:eval = sess.run()
    # print(a.eval())
    # print(sess.run(sum))
    print(sess.run([a, b, sum]))
    print(sess.run(cal))
    # 对于run的解释  对于多个值要放到列表里或者元祖里一起读取打印,int、、等等类型不能在tensorflow的会话当中去去运行


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轨迹|

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值