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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hong_Youth

您的鼓励将是我创作的动力。

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

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

打赏作者

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

抵扣说明:

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

余额充值