gradient tape有问题_NLP实战篇之tf2中tensor、variable、gradient、ops

本文是基于tensorflow2.2.0版本,介绍了tf中变量、张量的概念,tf中梯度的计算方式和tensor相关的操作。

实战系列篇章中主要会分享,解决实际问题时的过程、遇到的问题或者使用的工具等等。如问题分解、bug排查、模型部署等等。相关代码实现开源在:https://github.com/wellinxu/nlp_store ,更多内容关注知乎专栏(或微信公众号):NLP杂货铺。ff4cc7a0bbc5d03348188e9635b032ef.png

  • 变量
  • 张量
    • 张量的创建
    • 形状
    • 索引
  • 其他张量
    • 非矩阵张量
    • 稀疏张量
  • 梯度计算
    • GradientTape的参数与方法
    • Gradient tapes
    • 模型中的梯度
  • operations
    • 数组操作
    • 检查操作
    • 裁剪操作
    • 流程控制操作
    • 函数操作
    • 数学操作
    • 其他操作
  • 参考

变量

TensorFlow2中可以使用tf.Variable来创建变量,变量与张量(tensor)很接近,拥有tensor的很多属性,以及操作(加减乘除等)。但张量是不可改变的,而变量是可以重新赋值的。变量的创建以及再赋值方法如下:

import tensorflow as tf
my_tensor = tf.constant([1.0, 2.0])
my_variable = tf.Variable(my_tensor)     # 数值型
bool_variable = tf.Variable([False, False, False, True])    # bool型
complex_variable = tf.Variable([5 + 4j, 6 + 1j])    # 复数型

print(my_variable)    # 
print(bool_variable)    # 
print(complex_variable)    # 

# 再赋值
my_variable.assign([2.0, 3.0])
print(my_variable)    # 

张量

tensor(张量)是具有统一类型的多位数组,跟Python中数字、字符串类似,张量是不可改变的,只能创建一个新张量而不能更新张量的值(变量则可以更新)。

张量的创建

tensor可以直接从各种类型的数组(list或numpy)来创建,也能转成numpy数据。

# 创建
my_tensor1 = tf.constant([1.2, 4.5])
my_numpy = my_tensor1.numpy()
my_tensor2 = tf.convert_to_tensor(my_numpy)

print(my_tensor1)    # tf.Tensor([1.2 4.5], shape=(2,), dtype=float32)
print(my_numpy)    # [1.2 4.5]
print(my_tensor2)    # tf.Tensor([1.2 4.5], shape=(2,), dtype=float32)
形状

tensor形状相关的有这么几个概念:

  1. 形状:shape,tesor中每个维度的长度
  2. 秩,rank,tensor维度的个数,标量的秩是0,向量是1,矩阵是2
  3. 维度,axis/dimension
  4. 大小,size,tensor中所有元素的个数
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值