当前位置 博文首页 > hallobike的博客:TensorFlow2.0的Eager模式

    hallobike的博客:TensorFlow2.0的Eager模式

    作者:[db:作者] 时间:2021-09-14 22:00

    Eager模式简介

    tf.keras是TensorFlow2.0带给我们的高阶核心API。当使用自定义训练时,tf.keras就显得集成度太高了,不适合。所以就要用到Eager模式和自定义训练。

    TensorFlow的eager模式是一个命令式编程环境,它使得我们可以立即评估操作产生的结果,而无需构建计算图。也可以叫做交互模式。

    在TensorFlow1.0中的1.8以后版本需要手动启动Eager模式,但是在TensorFlow2.0版本中是直接默认使用eager模式的。 可以使用tf.executing_eagerly()命令通过返回值来判断是否在eager模式下。

    Eager模式提供了一个灵活的研究和实验机器学习平台, 提供:
    直观的界面——自然地构建代码并使用Python数据结构快速迭代小模型和小型数据。

    更容易调试——在交互式环境中直接检查、运行模型、测试变化。这个过程中代码会即时出现错误报告。

    自然控制流——eager模式下使用Python控制流而不是图控制流,简化了动态模型的创建。

    它支持大多数TensorFlow操作和GPU加速。

    在Eager模式下,TensorFlow操作会立即执行并将其值返回给Python。tf.Tensor对象引用具体值而不是计算图中节点的符号句柄。

    由于在会话中没有构建和运行的计算图,因此使用print()语句或调试器很容易检查结果、评估输出,打印和检查张量值,而不影响计算梯度的过程。

    Eager模式下TensorFlow可与Numpy很好地协作。TensorFlow数学运算可将python对象和Numpy数组转换为tf.Tensor对象。而tf.Tensor.numpy方法将对象的值作为Numpy返回ndarray。

    Eager模式代码演示

    # -*- coding: UTF-8 -*-"""
    Author: LGD
    FileName: test_eager
    DateTime: 2020/12/12 19:14 
    SoftWare: PyCharm
    """import tensorflow as tf
    
    # 打印TensorFlow版本
    print(tf.__version__)
    # 判断是否处于eager模式
    print(tf.executing_eagerly())
    
    x = [[2, ]]
    m = tf.matmul(x, x)  # 得到Tensor张量
    print(m)
    
    # 张量是不可变的,不仅可以存储在内存中,还可以存储在显存当中。# 直接是使用.numpy()可以获得对应的numpy对象
    print(m.numpy())
    # 建立tensor常量
    a = tf.constant([[1, 2], [3, 4]])
    
    print(a)
    print(a.numpy())
    
    # tensor张量相加
    b = tf.add(a, 1)
    print(b)
    # tensor张量相乘
    c = tf.multiply(a, b)
    print(c)
    
    # 将10转为tensor对象
    num = tf.convert_to_tensor(10)
    print(num)
    
    # 可以使用python控制流for i in range(num.numpy()):
        i = tf.constant(i)
        if int(i % 2) == 0:
            print('even')
        else:
            print('odd')
    
    import numpy as np
    
    # numpy对象可以直接与tensor对象运算,结果是tensor对象。
    d = np.array([[5, 6], [7, 8]])
    print(d)
    
    print(a + b)
    print((a + b).numpy())
    
    g = tf.convert_to_tensor(10)
    print(float(g))

    ?

    cs
    下一篇:没有了