Tensorflow框架学习记录--day01--(含版本不兼容解决方法)

Tensorflow结构分析

tensorflow程序通常被组织成一个构建图阶段和一个执行图阶段

在构建阶段,数据与操作的执行步骤被描述成一个图。

在执行阶段,使用会话执行构建好的图中的操作。

  1. 图和会话:
    :这是tensorflow将计算表示为指令之间的依赖关系的一种表示方法
    会话:tensorflow跨一个或多个本地或远程设备运行数据流图的机制
  2. 张量:tensorflow中的基本数据对象
  3. 节点:提供图当中执行的操作

数据流图

在这里插入图片描述tensorflow是一个采用数据流图,用于数值计算的开源框架。

节点在图中表示数学操作,线则表示在节点间相互联系的多维数据数组,即张量(tensor)

图的相关操作

1 默认图

通常tensorflow会默认帮我们创建一张图
查看默认图的两种方法:
1 通过调用tf.get_default_graph()访问,要将操作添加到默认图形中,直接创建OP即可(注意这里的如果是tensorflow2的代码一定会报错,要按照下面po的代码,用compat.v1里的get_default_graph()方法
2 op:sess都含有graph属性,默认都在一张图中
代码:

#查看默认图
    # 方法一:调用方法
    default_g = tf.compat.v1.get_default_graph()
    print("default_g:\n", default_g)

    #方法二:查看属性
    print("a_t的属性:\n" ,a_t.graph)
    print("b_t的属性:\n" ,b_t.graph)

2 创建图

可以通过tf.Graph()自定义创建图(tensorflow2:tf.compat.v1.Graph())
(后面我都会用这样的方式表示如果你版本不对,请按照括号后面的表达,否则会报错)

如果要在这张图中创建OP,典型用法是使用tf.Graph.as_default()上下文管理器

代码:

# 自定义图
    new_g = tf.compat.v1.Graph()
    # 在自己的图中定义数据和操作
    with new_g.as_default():
        a_new = tf.constant(20)
        b_new = tf.constant(30)
        c_new = a_new + b_new
        print("c_new:\n", c_new)

    # 开启new_g的会话
    with tf.compat.v1.Session(graph=new_g) as  new_sess:
        c_new_value = new_sess.run(c_new)
        print("c_new_value:\n", c_new_value)

Tensorflow可视化学习

tensorflow可用于训练大规模深度神经网络所需的计算,使用该工具的计算往往复杂而深奥,为了更方便tensorflow程序的理解、调试与优化,tensorflow提出了一种tensorBoard可视化工具。

1数据序列化-events文件

tensorboard通过读取tensorflow的事件文件来运行,需要将数据生成一个序列化的summary protobuf对象。

2 启动tensorboard

在浏览器中打开tensorboard的图页面:127.0.0.1:6006,会看到与以下图形类似的图,在GRAPHS模块我们可以看到以下图结构:
在这里插入图片描述打开控制台,进入相应目录:
在这里插入图片描述输入:tensorboard --logdir="./tmp/summary"

在这里插入图片描述会自动给你带出tensorflow的地址,在浏览器里打开就好了

错误总结

错误一

话不多说先po代码:

import tensorflow as tf

def tensorflow_demo():
    """
    Tensorflow的基本结构
    :return:
    """
    #原生python加法运算你
    a = 2
    b = 3
    c = a + b
    print("普通的加法运算的结果:\n", c)

    #Tensorflow的加法运算
 
    a_t = tf.constant(2)
    b_t = tf.constant(3)
    c_t = a_t + b_t
    print("Tensorflow加法运算的结果:\n", c_t)

    #开启会话
    with tf.Session() as sess:
        c_t_value = sess.run(c_t)
        print("c_t_value:\n", c_t_value)
    return None

if __name__ == "__main__":
    tensorflow_demo()

代码运行报错:
在这里插入图片描述
 或者:
  raise RuntimeError('The Session graph is empty. Add operations to the ’
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().

都是因为版本不兼容引起的问题,只需要将代码如下修改:

with tf.compat.v1.Session() as sess:

然后在最前面加上如下代码:

tf.compat.v1.disable_eager_execution()

再次运行:
在这里插入图片描述
搞定

错误二

报错:
在这里插入图片描述

 #查看默认图
    # 方法一:调用方法
    default_g = tf.default_graph()
    print("default_g:\n", default_g)

修改:

 #查看默认图
    # 方法一:调用方法
    default_g = tf.compat.v1.get_default_graph()
    print("default_g:\n", default_g)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件 本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值