深度学习——Variable(已经过时了!)

article/2025/10/28 23:42:05

一、简介

深度学习中使用pytorch框架,使用的数据一般是torch中的tensor形式。但是在参数表示中,一般是用variable变量形式。

二、variable的使用

(1)如何将tensor转化为variable

pytorch1.0之后tensor和variable没有区别了!!!

import torch
from torch.autograd import Variabletensor_data = torch.FloatTensor([[1, 2], [3, 4]])
# 将tensor数据转化为variable数据
variable = Variable(tensor_data, requires_grad=True)print("tensor_data为\n", tensor_data)
print("variable为\n", variable)

在这里插入图片描述

(2)requires_grad=True

在用Variable封装tensor中,将参数requires_grad设为True,这样的话,封装之后的variable会进行反向传播进而优化。

import torch
from torch.autograd import Variabletensor_data = torch.FloatTensor([[1, 2], [3, 4]])
# 将tensor数据转化为variable数据
variable = Variable(tensor_data, requires_grad=True)print("tensor_data为\n", tensor_data)
print("variable为\n", variable)print("-----------" * 5)
print("tensor相乘之后的结果")
print(torch.mean(tensor_data * tensor_data))
print("variable相乘之后的结果")
print(torch.mean(variable * variable))

在这里插入图片描述

(3)反向传播

import torch
from torch.autograd import Variabletensor_data = torch.FloatTensor([[1, 2], [3, 4]])
# 将tensor数据转化为variable数据
variable = Variable(tensor_data, requires_grad=True)print("tensor_data为\n", tensor_data)
print("variable为\n", variable)print("-----------" * 5)
print("tensor相乘之后的结果")
t_out = torch.mean(tensor_data * tensor_data)
print(t_out)
print("variable相乘之后的结果")
v_out = torch.mean(variable * variable)
print(v_out)# 对v_out进行反向传播
v_out.backward()
print('v_out进行反向传播之后,variable的梯度')
# 因为v_out由variable而来的,所以v_out反向传播之后,variable也会受影响
print(variable.grad)

在这里插入图片描述

(4)variable和tensor还是有一点区别的!

import torch
from torch.autograd import Variabletensor_data = torch.FloatTensor([[1, 2], [3, 4]])
# 将tensor数据转化为variable数据
variable = Variable(tensor_data, requires_grad=True)print("tensor_data为\n", tensor_data)
print("variable为\n", variable)print("-----------" * 5)
print("tensor相乘之后的结果")
t_out = torch.mean(tensor_data * tensor_data)
print(t_out)
print("variable相乘之后的结果")
v_out = torch.mean(variable * variable)
print(v_out)# 对v_out进行反向传播
v_out.backward()
print('v_out进行反向传播之后,variable的梯度')
# 因为v_out由variable而来的,所以v_out反向传播之后,variable也会受影响
print(variable.grad)print("-----------------" * 5)
# variable和tensor类型一样
print("variable的类型为", type(variable))
print(type(variable.data))
# 直接将variable使用numpy()转化为numpy类型,会报错
# variable和tensor还是有一点区别的!
print(variable.numpy())

在这里插入图片描述

(5)对上面(4)的修改

import torch
from torch.autograd import Variabletensor_data = torch.FloatTensor([[1, 2], [3, 4]])
# 将tensor数据转化为variable数据
variable = Variable(tensor_data, requires_grad=True)print("tensor_data为\n", tensor_data)
print("variable为\n", variable)print("-----------" * 5)
print("tensor相乘之后的结果")
t_out = torch.mean(tensor_data * tensor_data)
print(t_out)
print("variable相乘之后的结果")
v_out = torch.mean(variable * variable)
print(v_out)# 对v_out进行反向传播
v_out.backward()
print('v_out进行反向传播之后,variable的梯度')
# 因为v_out由variable而来的,所以v_out反向传播之后,variable也会受影响
print(variable.grad)print("-----------------" * 5)
# variable和tensor类型一样
print("variable的类型为", type(variable))
print(type(variable.data))
# 直接将variable使用numpy()转化为numpy类型,会报错
# variable和tensor还是有一点区别的!
# 修改这里
print(variable.data.numpy())

在这里插入图片描述


http://chatgpt.dhexx.cn/article/O20q6Vsd.shtml

相关文章

Pytorch的Variable详解

pytorch两个基本对象:Tensor(张量)和Variable(变量) 其中,tensor不能反向传播,variable可以反向传播。 tensor的算术运算和选取操作与numpy一样,一次你numpy相似的运算操作都可以迁…

13.2 用Patsy创建模型

1、patsy适合描述statsmodels的线性模型,其公式是一个特殊的字符串语法,表示为模型设计矩阵 2、patsy.dmatrices函数接收一个公式字符串和一个数据集,为线性模型设计矩阵 3、Pasty对象可以直接传递到算法,如下面的最小二乘回归 4、…

Could not find a version

目标检测—教你利用yolov5训练自己的目标检测模型 我自己的另一篇配置文件和代码地址博客总结 CondaHTTPError: HTTP 000 CONNECTION FAILED for url 的问题终极解决方案 配置环境 安装pytorch 利用Anaconda安装pytorch和paddle深度学习环境pycharm安装—免额外安装CUDA和c…

statsmodels遇到的坑!!!

ImportError: cannot import name cached_data ModuleNotFoundError: No module named patsy python SimpleExpSmoothing 错误 statsmodels安装包地址: Python Extension Packages for Windows - Christoph Gohlke (uci.edu) 现已完美解决~

python数据处理包_python数据处理包安装

1> 本机环境 C:\Python27>python Python 2.7.12rc1 (v2.7.12rc1:13912cd1e7e8, Jun 12 2016, 05:57:31) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.…

手把手教你用Python进行回归(附代码、学习资料)

作者: GURCHETAN SINGH 翻译:张逸 校对:丁楠雅 本文共5800字,建议阅读8分钟。本文从线性回归、多项式回归出发,带你用Python实现样条回归。 我刚开始学习数据科学时,第一个接触到的算法就是线性回归。在把…

【Python数据分析】实践编写篇2:用Python进行回归分析与相关分析

目录 一、前言 1.1 回归分析 1.2 相关分析 二、代码的编写 2.1 前期准备 2.2 编写代码 2.2.1 相关分析 2.2.2 一元线性回归分析 2.2.3 多元线性回归分析 2.2.4 广义线性回归分析 2.2.5 logistic回归分析 三、代码集合 一、前言 1.1 回归分析 是用于研究分析某一变量受其…

chatgpt赋能Python-python_patsy

Python Patsy: 一个用于统计建模的Python库 什么是Patsy? Patsy是一个Python库,用于进行统计建模和数据预处理。Patsy的主要目的是将数据转换为适合统计建模的格式。它是一个基于公式的语言,通过描述预测变量和目标变量之间的关系&#xff…

Simple Linear Regression:ONE

前言 对于一些库的说明 numpy:支持矩阵运算,在矩阵运算这方面可以完全替代基于向量编程的matlab pandas:这个是一个数据存储库,是以表单(dataframe)为基本单位,这个库的好处在于行列 索引并不是…

python建模库介绍:pandas与建模代码的结合,使用Patsy创建模型描述

13.1 pandas与建模代码的结合 使用pandas用于数据载入和数据清洗,之后切换到模型库去建立模型是一个常见的模型开发工作流。在机器学习中,特征工程时模型开发的重要部分之一,特征工程就是指从原生数据集中提取可用于模型上下文的有效信息的数…

py之patsy:patsy的简介、安装、使用方法之详细攻略

py之patsy:patsy的简介、安装、使用方法之详细攻略 目录 patsy的简介 patsy的安装 patsy的使用方法 patsy的简介 Patsy是一个python库,用于描述统计模型(尤其是线性模型,或具有线性组件的模型)和构建设计矩阵。Pats…

两个线程循环打印121212...

A线程打印1,B线程打印2,要求循环打印121212... 思路 两个线程,可以想到的是多线程编程,共享变量,数据等,设想先让一个线程打印1,然后处于等待(wait)状态,接着…

静态路由实验总结

静态路由试验 实验目的 实现此图的全网互通 实验基础知识 路由的工作原理:路由器收到数据包之后,会查看其目标IP地址,会查询本地的路由表,若表中记录有去往目标的路径,则无条件转发;若没有去往目标的路…

C++第八次上机实验总结(多态)

一、实验目的: ①.掌握C语言多态性的基本概念; ②.掌握运算符重载函数的声明和定义方式; 二、试验任务: 1. 编写一个程序,实现两个负数相加(分别用类外定义运算符重载函数、友元运算符重载函数、成员运算符…

java程序实验总结_Java实验报告一及作业总结二

Java实验报告 实验一 Java开发环境与简单Java程序 一、 实验目的 (1) 熟悉JDK开发环境 (2) 熟练掌握结构化程序设计方法 二、 实验内容 1. 打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。 2. 编写…

计算机网络实验总结

一、ICMP抓包观察及Tracert 抓包分析 1.实验目的 理解ICMP,掌握ICMP帧结构,掌握IP协议原理,理解IP帧结构 2.实验步骤 1、观察ICMP目标不可达消息 使用Ping命令,去ping一个不存在的主机IP,如10.104.125.344。使用wi…

STM32 PWM输出实验总结

本实验是基于STM32 407的板子,使用的是通用定时器TIM14,相关的博文其实有很多,本文主要是基于他们结合个人学习理解总结整理,并非完全原创,只希望能帮助更好理解PWM输出的过程尤其是TIM_ARRPreloadConfig(TIM14, ENABL…