TensorFlow2.0的Eager模式

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))

猜你喜欢

转载自blog.csdn.net/hallobike/article/details/112059951
今日推荐