python中tensor与variable_NLP实战篇之tf2中tensor、variable、gradient、ops

本文介绍了TensorFlow2中的变量(Variable)、张量(Tensor)以及梯度计算。通过实例展示了如何创建、操作变量和张量,包括形状、索引、非矩阵张量和稀疏张量。同时,详细解释了如何利用GradientTape进行梯度计算,并提供了模型中梯度计算的示例。
摘要由CSDN通过智能技术生成

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

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

变量

张量张量的创建

形状

索引

其他张量非矩阵张量

稀疏张量

梯度计算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形状相关的有这么几个概念:形状:shape,tesor中每个维度的长度

秩,rank,tensor维度的个数,标量的秩是0,向量是1,矩阵是2

维度,axis/dimension

大小,size,tensor中所有元素的个数

下面代码中展示了一个4维tensor的几个概念:

rank_4_tensor = tf.zeros([3, 2, 4, 5])

print("Type of every element:", rank_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值