首页 > 其他分享 >张量求导

张量求导

时间:2024-07-27 10:06:58浏览次数:12  
标签:1.0 tensor True torch 张量 求导 grad

点击查看代码
# -*- coding: utf-8 -*-
# @Author  : 钱力
# @Time    : 2024/7/27 8:48

import torch

# 标量求导
x = torch.tensor(-2.0, requires_grad=True)  # x需要被求导
b = torch.tensor(-2.0)
c = torch.tensor(1.0)
d = torch.pow(x, 2)
e = x * b
y = d + e + c
y.backward(retain_graph=True)  # 保留图
print("1次求导后", x.grad)  # 求导完只后,图会销毁
# y.backward()
# print("2次求导后",x.grad) #再次求导就会报错
x.grad.zero_()  # 梯度清零
y.backward(retain_graph=True)
print("2次求导后", x.grad)  # 梯度累加,默认保存之前求导的结果
x.grad.zero_()  # 梯度清零
y.backward(retain_graph=True)
print("3次求导后", x.grad)

# 向量/矩阵求导
# 实际上pytorch不支持矩阵对矩阵的求导,只支持对标量的求导
x = torch.tensor([[3.0, 4.0], [1.0, 2.0]], requires_grad=True)
a = torch.tensor(1.0)
b = torch.tensor(-2.0)
c = torch.tensor(1.0)
y = a * torch.pow(x, 2) + b * x + c
# 方法1
y1 = y.mean()
y1.backward(retain_graph=True)
print(x.grad)
x.grad.zero_()
# 方法2
gradient = torch.tensor([[1.0, 1.0], [1.0, 1.0]]) /4
# 用gradient进行加权
y.backward(gradient=gradient)
print(x.grad)

标签:1.0,tensor,True,torch,张量,求导,grad
From: https://www.cnblogs.com/qian-li-xju/p/18326664

相关文章

  • LSTNet RuntimeError:输入和参数张量不在同一设备上
    我克隆了一个githubrepo它运行一个pytorch深度学习模块,我定制了这部分以将模块和数据发送到GPU。train_dataset=MarketDataset(train_data,history_len=history_len)train_data_loader=DataLoader(train_dataset,batch_size=batch_size,shuffle=True)model......
  • 张量的集合操作
    点击查看代码#-*-coding:utf-8-*-#@Author:钱力#@Time:2024/7/2614:24importtorch#合并操作A=torch.arange(0,16).view(2,8)B=10*AC=torch.cat([A,B],dim=1)#将矩阵根据特定维度进行缝合print(C)D=torch.stack([A,B],dim=1)#......
  • tensor对张量和矩阵的操作
    点击查看代码#-*-coding:utf-8-*-#@Author:钱力#@Time:2024/7/2610:36importtorcha=torch.arange(5)b=a[2:]#截取a的部分值print('a',a)print('b',b)#打印存储地址#可以发现他们共用存储区#b的索引比a偏移了2位print(a.untyped_storage......
  • TF/Keras 为什么 MaxPooling3D 在这段代码中返回一个张量的元组而不是单个张量?
    tensorflow2.15后端inp=layers.Input(batch_shape=batch_shape)print('Input{}'.format(str(inp.shape)))输入(1,7,60,60,1)x=inpx=layers.Dropout(0.2)(x)x=layers.LayerNormalization()(x)x=layers.Conv2D(filters=16,......
  • Pydantic:类型提示张量流张量
    知道如何使用pydantic输入提示tf张量吗?尝试了默认的tf.TensorRuntimeError:novalidatorfoundfor<class'tensorflow.python.framework.ops.Tensor'>,see`arbitrary_types_allowed`inConfig和tf.flaot32RuntimeError:errorcheckinginheritanceoftf.f......
  • 高频变压器:ValueError:无法创建张量
    我正在遵循本指南并且我得到了错误:ValueError:Unabletocreatetensor,youshouldprobablyactivatetruncationand/orpaddingwith'padding=True''truncation=True'tohavebatchedtensorswiththesamelength.我尝试添加padding=True和......
  • 科研中常用到的矩阵乘积求导
        针对优化问题来说,一般选有优化变量X:    构造优化问题中常常会出现一些矩阵,这里用ABC表示,这些矩阵会与x进行相关计算,然后你要更新x,就要去求由上述矩阵表示的代价对于x的雅可比矩阵。    这里给出乘积矩阵求导的基本逻辑:    以这个规则......
  • 《昇思25天学习打卡营第3天|初学教程/张量 Tensor》
    文章目录张量Tensor内积(InnerProduct)外积(OuterProduct)线性映射(LinearMapping)笛卡儿积(CartesianProduct)创建张量张量的属性张量索引张量运算Tensor与NumPy转换稀疏张量CSRTensorCOOTensor张量Tensor张量(Tensor)是一个可用来表示在一些矢量、标量和其他张量之......
  • 【张量|TRPCA】Tensor Robust Principal Component Analysis with A New Tensor Nuclea
    支持我的工作......
  • 4-1.张量的结构操作
    文章最前:我是Octopus,这个名字来源于我的中文名–章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github;这博客是记录我学习的点点滴滴,如果您对Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。本篇我们介绍张量的结构操作。张量结构操作主......