tensorflow中去上下三角矩阵:matrix_band_part 和tf.linalg.band_part

本文介绍 TensorFlow 中 tf.linalg.band_part 函数的使用方法。该函数用于提取矩阵中指定范围内的副对角线元素,并将其他部分设为零。文章通过实例展示了如何设置 num_lower 和 num_upper 参数来控制所提取的副对角线范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tf.linalg.band_part

  • 新版本:tf.matrix_band_part变成tf.linalg.band_par

函数原型:

tf.linalg.band_part(
    input,
    num_lower,
    num_upper,
    name=None
)

参数:

  • 作用:主要功能是以对角线为中心,取它的副对角线部分,其他部分用0填充。
  • input:输入的张量.
  • num_lower:下三角矩阵保留的副对角线数量,从主对角线开始计算,相当于下三角的带宽。取值为负数时,则全部保留。
  • num_upper:上三角矩阵保留的副对角线数量,从主对角线开始计算,相当于上三角的带宽。取值为负数时,则全部保留。

例子:

import tensorflow as tf
tf.enable_eager_execution()
a=tf.constant( [[ 1,  1,  2, 3],[-1,  2,  1, 2],[-2, -1,  3, 1],
                 [-3, -2, -1, 5]],dtype=tf.float32)
b=tf.linalg.band_part(a,2,0)
c=tf.linalg.band_part(a,1,1)
d=tf.linalg.band_part(a,-1,1)
print(a)
print(b)
print(c)
print(d)
输出:
tf.Tensor(
[[ 1.  1.  2.  3.]
 [-1.  2.  1.  2.]
 [-2. -1.  3.  1.]
 [-3. -2. -1.  5.]], shape=(4, 4), dtype=float32)
=============================================================
tf.Tensor(
[[ 1.  0.  0.  0.]
 [-1.  2.  0.  0.]
 [-2. -1.  3.  0.]
 [ 0. -2. -1.  5.]], shape=(4, 4), dtype=float32)
 =============================================================
tf.Tensor(
[[ 1.  1.  0.  0.]
 [-1.  2.  1.  0.]
 [ 0. -1.  3.  1.]
 [ 0.  0. -1.  5.]], shape=(4, 4), dtype=float32)
  =============================================================
tf.Tensor(
[[ 1.  1.  0.  0.]
 [-1.  2.  1.  0.]
 [-2. -1.  3.  1.]
 [-3. -2. -1.  5.]], shape=(4, 4), dtype=float32)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值