当前位置: 首页 > news >正文

11.21 深度学习-tensor常见操作

import torch

from PIL import Image

from torchvision import transforms

#  获取元素值 tensor.item() 返回一个数值 只能是tensor里面有一个数字的

# 我们可以把单个元素tensor转换为Python数值,这是非常常用的操作

# tensor 里面超过了1个数字就不行

def get_item():

    t1=torch.tensor(1)

    t2=torch.tensor([[[100]]])

    x=t1.item()

    print(x)

    x=t2.item()

    print(x)

    pass

# 元素值四则运算

def compute():

    # 加减乘除

    torch.manual_seed(666)

    t1=torch.rand(3,3)

    # 末尾有下划线的直接是改变原来的数据

    # 对tensor里面的每个元素都 进行 四则运算操作

    # + add

    t1_add=t1.add(1)

    t1.add_(1)

    # - sub

    t1_sub=t1.sub(-1)

    t1.sub_(1)

    # * / 次方同理  mul div  pow

   

    # 也可以通过运算符号来进行 tensor类里面有魔术方法实现了 四则 次方 // % 都可以 这个没有对原来数据进行改变的

    t2=t1+10

    t3=t1**2

    print(t3)

    pass

def hadamard():

    # 两个tensor相同位置的元素相乘 两个tensor形状要一样

    # 阿达玛积指的是矩阵对应位置的元素相乘,可以使用mul函数或者*来实现 其实就是上面的乘法换成了 两个tensor 相乘

    data1 = torch.tensor([[1, 2, 3], [4, 5, 6]])

    data2 = torch.tensor([[2, 3, 4], [2, 2, 3]])

    print(data1 * data2)

    print(data1.mul(data2))

    pass

# 点积

def dotProduct():

    # 就是矩阵乘法的意思 第一个矩阵列数 和第二个矩阵的行数要相同 结果矩阵的形状为(第一个矩阵的行,第二个矩阵的列)

   

    data1 = torch.tensor([

        [1, 2, 3],  

        [4, 5, 6]

    ])

    data2 = torch.tensor([

        [3, 2],

        [2, 3],

        [5, 3]

    ])

    # 使用@或者matmul完成Tensor的乘法。  @ 是点积的符号 a@b  matmul和 mm是tensor的方法 mm只能用于二维的矩阵乘法 就是只有行列的 一般都是二维或者三维 乘法没有交换律注意顺序

    # mm方法也可以用于矩阵相乘 但是只能用于2维矩阵即:$$m*k$$和$$k*n$$ 得到$$m*n$$ 的矩阵

    res1=data1 @ data2

    res2=data1.matmul(data2)

    res3=data1.mm(data2)

    pass

# 索引操作

def index():

    torch.manual_seed(666)

    t1=torch.rand(3,5,5)

    # 跟np数组嵌套的索引差不多 就是嵌套列表的取法 套几个索引

    t1[1]

    t1[1,1]

    t1[1,1,1]

    # 取范围 第一维取 0 和1 取出来的矩阵在取 1

    t1[0:2,1]

    t1[0:2,1:3]

   

    t1[[1,2]] # 取第一维的1和3 在一个维度上取多个的时候传个矩阵进去 这个不会降维的 取出来就相当于重新组了一下 不是切片

    t1[[1,2],[1,1]] # 对应 矩阵取出来 [1,1] [2,1]

    # 也可以进行布尔运算 跟np差不多 返回的是一个布尔矩阵 布尔矩阵可以拿去 返回为ture的元素 返回出来变为1维的了

    x2=t1>0.5

    # print(x2)

    # print(t1[x2])

    # print(t1[t1>0.5])

    # 行级别的条件索引

    t2=torch.rand(5,5)

    x3=t2[:,1]>6 # 所有行的第一列大于6的 前面是行范围 后面是范围  对应一维范围 二维范围 三维范围。。。。 最后一维范围只能是一个数 对最后一维进行判断或者赋值

    t1[0:2,0:2,1]>0.5

    t2[x3]

    # 索引也可以拿来赋值 就是修改数据 取索引然后赋值

    t2[:,:]=6

    print(t2)

    pass

# 张量的拼接 torch的方法 返回一个新的tensor

# 在 PyTorch 中,cat 和 stack 是两个用于拼接张量的常用操作,但它们的使用方式和结果略有不同:

# - **cat**:在现有维度上拼接,不会增加新维度。

# - **stack**:在新维度上堆叠,会增加一个维度。

def splice():

    torch.manual_seed(666)

    t1=torch.rand(3,3)

    t2=torch.rand(3,3)

    # torch.cat(concatenate 的缩写)用于沿现有维度拼接张量。换句话说,它在现有的维度上将多个张量连接在一起。 就是np数组的拼接方式

    # torch.cat() 传参 :第一个 数组 里面是要拼接的tensor 第二个 dim 拼接的轴 注意 拼接的轴 另一个轴的数据量要一样 拼接的轴数据量可以不一样

    # 拼接 一个人完了再下一个人

    t3=torch.cat([t1,t2],dim=0)

    # print(t3)

    # 堆叠 交替添加

    # torch.stack 用于在新维度上拼接张量。换句话说,它会增加一个新的维度,然后沿指定维度堆叠张量 两个矩阵必须size一样

    t4=torch.stack([t1,t2],dim=2)

    print(t4.shape)

    # stack 补充解析

    # 1. 从维度的视角看 会新加一个维度 维度的大小为进行stack矩阵的数量 然后这个位置在新tensor的位置就是dim

    # 2. 从矩阵变换的视角看 比如二维矩阵  dim = 0 就是自己创建一个新的数组然后把 进行stack的两个矩阵放进去

    # dim=1 就是两个矩阵 轮流取第一层的元素组成一个新矩阵的第一层

    # dim=2 就是两个矩阵 轮流取第二层的元素组成新矩阵的第二层 新矩阵的第一层为

    pass

# stack应用 把Image的tensor 转为 cv2的tensor

def demo1():

    transform1=transforms.ToTensor()

    img1=Image.open("assets/image/1.png")

    # img1_t1=transform1(img1)

    img1_t1=torch.rand(4,5,6,7)

    print(img1_t1.shape)

    img1_t2=torch.stack([img1_t1[0],img1_t1[1],img1_t1[2],img1_t1[3]],dim=3)

    print(img1_t2.shape)




 

if __name__=="__main__":

    # get_item()

    # compute()

    # hadamard()

    # dotProduct()

    # index()

    # splice()

    # demo1()

    splice()

    pass

import torch

from PIL import Image

from torchvision import transforms

def sci():

    torch.set_printoptions(sci_mode=False)

    return 0

# 形状操作

# reshape torch 的方法 改玩后的形状 的 元素个数要跟原来的一样 比如原来是10*10 改完后的元素个数必须为100 返回新的tensor

# 可以用于将张量转换为不同的形状,但要确保转换后的形状与原始形状具有相同的元素数量。

def reshape1():

    torch.manual_seed(666)

    t1=torch.rand(20,4)

    # print(t1)

    t2=torch.reshape(t1,(4,20)) # 传入被改的tensor 和形状

    # 可以有一个维度为-1 代表程序自己通过其他维度的元素数量 自己算这个维度的元素数量

    t3=torch.reshape(t1,(40,-1))

    print(t3)

    pass

# 也可以用view变形 tensor的方法

# 这个只能对张量里面的元素是内存连续的 才可以

# 对刚创建出来的tensor进行操作后 就很容易内存不连续 比如转置

# 返回的是原始张量视图,不重新分配内存,效率更高; 比reshape快  这个相当于浅拷贝 不会开新的内存 就是把原来的内存重新排列一下下标

def view1():

    torch.manual_seed(666)

    t1=torch.rand(20,4)

    t2=t1.view(4,20)

    t2[:,-1]=6

    print(t2)

    print(t1)

    pass

# 交换维度 在二维矩阵上像转置一样

# transpose  troch 方法 跟view 一样返回的是原tensor的视图 浅拷贝

# permute tensor 方法 返回一个新的  对维度重新排列 不是浅拷贝

def transpose1():

    torch.manual_seed(666)

    t1=torch.rand(20,4)

    t3=torch.rand(20,4,3)

    t2=torch.transpose(t1,0,1) #  传入tensor和要交换的维度

    t4=torch.transpose(t3,1,2)

    # print(t4.shape)

    t5=t3.permute(1,2,0) # 传入 维度  传入维度的顺序为新的 tensor的维度排序 交换维度

    pass

# tensor展平

# flatten tensor 方法

# flatten 用于将张量展平为一维向量

def flatten1():

    torch.manual_seed(666)

    t1=torch.rand(20,4,3)

    t2=t1.flatten() # 传入开始 展平的层数 和结束展平的层数

    sci()

    print(t2)

    pass

# 升维和降维

# 在后续的网络学习中,升维和降维是常用操作,需要掌握。 tensor 方法 返回新的

# - **unsqueeze**:用于在指定位置插入一个大小为 1 的新维度。 加个[]

# - **squeeze**:用于移除所有大小为 1 的维度,或者移除指定维度的大小为 1 的维度

def squeeze():

    # 降维 一般用于 那些维度的元素数量为1的 直接就删掉了那个维度

    torch.manual_seed(666)

    t1=torch.rand(20,4,3,1,1)

    t2=t1.squeeze() # 传入要删除的维度 默认全部 大小为1 的维度都要删

    print(t2)

    pass

# 升维

def unsqueeze():

    # 升维 在一个维度上 加一个维度 一般都在指定维度的前面

    torch.manual_seed(666)

    t1=torch.rand(20,4,3,1,1)

    t2=t1.unsqueeze(2) # 传入要删除的维度 默认全部 大小为1 的维度都要删

    print(t2.shape)

    pass

# 分割

# 可以按照指定的大小或者块数进行分割。

# chunk  torch方法 按照传入的块数分割 平均 分完后元素的行数个数是平均的 列是最后被分的

# split  按照传入的每一块的元素 的行数分割

# 返回的都是 元组

def split1():

    torch.manual_seed(666)

    t1=torch.rand(20,4)

    t2=torch.chunk(t1,20)

    t3=torch.split(t1,2)

    print(t3[0].shape)

# 广播机制 跟numpy差不多

# 广播机制

# 广播机制允许在对不同形状的张量进行计算,而无需显式地调整它们的形状。广播机制通过自动扩展较小维度的张量,使其与较大维度的张量兼容,从而实现按元素计算。

# 广播机制规则

# 广播机制需要遵循以下规则:

# - 每个张量的维度至少为1

# - 满足右对齐

# 被广播的那个矩阵 的被广播的维度大小为1


 

if __name__=="__main__":

    # reshape1()

    # view1()

    # transpose1()

    # flatten1()

    # squeeze()

    # unsqueeze()

    split1()

    pass

相关文章:

11.21 深度学习-tensor常见操作

import torch from PIL import Image from torchvision import transforms # 获取元素值 tensor.item() 返回一个数值 只能是tensor里面有一个数字的 # 我们可以把单个元素tensor转换为Python数值,这是非常常用的操作 # tensor 里面超过了1个数字就不行 def g…...

gitlab和jenkins连接

一:jenkins 配置 安装gitlab插件 生成密钥 id_rsa 要上传到jenkins,id_rsa.pub要上传到gitlab cat /root/.ssh/id_rsa 复制查看的内容 可以看到已经成功创建出来了对于gitlab的认证凭据 二:配置gitlab cat /root/.ssh/id_rsa.pub 复制查…...

从视频帧生成点云数据、使用PointNet++模型提取特征,并将特征保存下来的完整实现。

文件地址 https://github.com/yanx27/Pointnet_Pointnet2_pytorch?spm5176.28103460.0.0.21a95d27ollfze Pointnet_Pointnet2_pytorch\log\classification\pointnet2_ssg_wo_normals文件夹改名为Pointnet_Pointnet2_pytorch\log\classification\pointnet2_cls_ssg "E:…...

vue3 + Element Plus + ts 封装全局的 message、messageBox、notification 方法

本文示例将 Element Plus 中的 ElMessage 消息提示, ElMessageBox 消息弹出框, ElNotification 消息通知 方法统一封装到全局 hooks 文件中方便全局调用 准备:在项目 src 目录中新建 hooks 目录、然后在 hooks 目录中新建 index.ts (如果你没有使用 ts …...

【人工智能】Python在机器学习与人工智能中的应用

Python因其简洁易用、丰富的库支持以及强大的社区,被广泛应用于机器学习与人工智能(AI)领域。本教程通过实用的代码示例和讲解,带你从零开始掌握Python在机器学习与人工智能中的基本用法。 1. 机器学习与AI的Python生态系统 Pyth…...

linux上安装docker

在 Linux 上安装 Docker 是一个相对简单的过程。以下是针对 Debian 和其他基于 Debian 的发行版(如 Ubuntu)的详细步骤。如果您使用的是其他发行版(如 CentOS 或 Fedora),也可以参考相应的官方文档进行安装。 安装 Do…...

LeetCode:1008. 前序遍历构造二叉搜索树

目录 题目描述: 代码: 第一种: 第二种: 第三种:分治法 题目描述: 给定一个整数数组,它表示BST(即 二叉搜索树 )的 先序遍历 ,构造树并返回其根。 保证 对于给定的测试用例,总是有可能找到具有给定需求的二叉搜索树。 二叉搜索树 是一棵…...

开源远程桌面工具:RustDesk

在远程办公和远程学习日益普及的今天,我们经常需要远程访问办公电脑或帮助他人解决电脑问题。 市面上的远程控制软件要么收费昂贵,要么需要复杂的配置,更让人担心的是数据安全问题。 最近我发现了一款名为 RustDesk 的开源远程桌面工具&…...

nfs服务器--RHCE

一,简介 NFS(Network File System,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计 算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系…...

使用 Elastic 3 步实现基于 OTel 的原生 K8s 和应用可观测性

作者:来自 Elastic Bahubali Shetti Elastic 的 OpenTelemetry 发行版现已支持 OTel Operator,可使用 EDOT SDK 自动检测应用程序,并管理 EDOT OTel Collector 的部署和生命周期以实现 Kubernetes 可观察性。了解如何通过 3 个简单步骤进行配…...

Vue3-小兔鲜项目出现问题及其解决方法(未写完)

基础操作 (1)使用create-vue搭建Vue3项目 要保证node -v 版本在16以上 (2)添加pinia到vue项目 npm init vuelatest npm i pinia //导入creatPiniaimport {createPinia} from pinia//执行方法得到实例const pinia createPinia()…...

【mysql】锁机制 - 3.意向锁

意向锁(Intension Lock) 是为了提高粗粒度锁性能而设置的一种预判机制,即在一个操作发起实际资源的锁申请行为之前,先对更粗力度的资源发起一个加锁意向声明。 为什么需要意向锁? 比如对于以下操作: 事务…...

Nuxt3 动态路由URL不更改的前提下参数更新,NuxtLink不刷新不跳转,生命周期无响应解决方案

Nuxt3 动态路由URL不更改的前提下参数更新,NuxtLink不刷新不跳转,生命周期无响应解决方案 首先说明一点,Nuxt3 的动态路由响应机制是根据 URL 是否更改,参数的更改并不会触发 Router 去更新页面,这在 Vue3 上同样存在…...

Spring Boot集成Redis:配置、序列化与持久化

Spring Boot集成Redis:配置、序列化与持久化 一、简介 什么是Redis Redis是一个开源的、基于内存的高性能键值对存储数据库,支持多种数据结构如字符串、哈希、列表、集合等。它以其卓越的性能、高可用性和持久性而广受欢迎。 为什么要使用Redis Red…...

JAVA:探索 PDF 文字提取的技术指南

1、简述 随着信息化的发展,PDF 文档成为了信息传播的重要媒介。在许多应用场景下,如数据迁移、内容分析和信息检索,我们需要从 PDF 文件中提取文字内容。JAVA提供了多种库来处理 PDF 文件,其中 PDFBox 和 iText 是最常用的两个。…...

当你项目服务器磁盘报警

当你们公司运维收到这样的邮件,大概率日志文件过大引起的 在Linux下如何不停止服务,清空nohup.out文件呢? nohup.out会一直一直自己增长下去,如果你的服务器硬盘不给力的话,很容易把应用也挂掉(硬盘没空间 &#xff0…...

SpringBoot中Maven的定义及国内源配置教程,实现自动获取Jar包

推荐一个国内镜像API网站,无需信用卡及科学上网即可调用gpt,claude3,gemini等国外模型,感兴趣的可以看下👉:https://api.atalk-ai.com/ SpringBoot中Maven的定义及国内源配置教程,实现自动获取J…...

LSTM 和 LSTMCell

1. LSTM 和 LSTMCell 的简介 LSTM (Long Short-Term Memory): 一种特殊的 RNN(循环神经网络),用于解决普通 RNN 中 梯度消失 或 梯度爆炸 的问题。能够捕获 长期依赖关系,适合处理序列数据(如自然语言、时间序列等&…...

【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)

【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter) 更新以gitee为准: 文章目录 数据预测概念和适用方式线性系统的适用性 数据预测算法和卡尔曼滤波公式推导状态空间方程和观测器先验估计后验估计…...

神经网络问题之一:梯度消失(Vanishing Gradient)

梯度消失(Vanishing Gradient)问题是深度神经网络训练中的一个关键问题,它主要发生在反向传播过程中,导致靠近输入层的权重更新变得非常缓慢甚至几乎停滞,严重影响网络的训练效果和性能。 图1 在深度神经网络中容易出现…...

【微软:多模态基础模型】(4)统一视觉模型

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【微软:多模态基础模型】(1)从专家到通用助手 【微软:多模态基础模型】(2)视觉理解 【微…...

npm | Yarn | pnpm Node.js包管理器比较与安装

一、包管理器比较 参考原文链接: 2024 Node.js Package Manager 指南:npm、Yarn、pnpm 比较 — 2024 Node.js Package Manager Guide: npm, Yarn, pnpm Compared (nodesource.com) 以下是对 Node.js 的三个包管理工具 npm、Yarn 和 pnpm 的优缺点总结&am…...

建造者模式

什么是建造者模式? 建造者模式(Builder Pattern)是一种设计模式,用来一步步创建复杂的对象,而不用直接去调用复杂的构造函数或手动设置大量属性。 你可以: • 按步骤“搭建”对象。 • 自由选择要设置的部…...

Spring Boot核心概念:应用配置

Spring Boot提供了强大的配置系统,允许开发者通过配置文件轻松管理应用的配置。支持的主要配置文件格式有两种:application.properties和application.yml。 application.properties与application.yml application.properties和application.yml是Spring…...

linux环境安装cuda toolkit

1 全新安装 如果环境中没安装过cuda版本, 这种情况下比较简单。 直接在https://developer.nvidia.com/cuda-toolkit-archive选择对应版本下载安装即可。 如下为安装cuda toolkit 11.8. 2 环境中已经存在其他版本 这种情况下比较复杂一些。 首先要确认最高支持的版…...

WebSocket实战,后台修改订单状态,前台实现数据变更,提供前端和后端多种语言

案例场景: 在实际的后台中需要变更某个订单的状态,在官网中不刷新页面,可以自动更新状态 在前端页面实现订单状态的实时更新(不刷新页面),可以通过 WebSocket 的方式与后台保持通信,监听订单状态…...

实时通信协议概述:WebRTC、RTP/RTCP、RTMP、HLS 和 FLV 的比较与应用

文章目录 一、协议总览二、WebRTC2.1 时序图2.2 代码示例 三、RTP/RTCP3.1 时序图3.2 代码示例 四、RTMP4.1 时序图4.2 代码示例 五、HLS5.1 时序图5.2 代码示例 六、总结 一、协议总览 协议/格式细节对比适用场景用法WebRTC使用 UDP 传输协议,支持 P2P 通信&#…...

Vue路由

目录 1. 安装 vue-router 2. 创建 Vue 项目结构 3. 配置路由 4. 在 main.js 中使用路由 5. 在 App.vue 中添加 6. 创建组件 7. 运行你的应用 在 Vue.js 2 中,路由管理通常通过 vue-router 插件来实现。vue-router 是一个官方的路由管理器,允许你…...

uniapp开发微信小程序笔记3-全局配置、导航栏配置、tabBar配置

前言: 本文记录的是微信小程序的全局配置、导航栏配置、tabBar配置 一、全局配置: 可以直接查官方文档:pages.json 页面路由 | uni-app官网,有非常详细的文档说明 都是在 pages.json里面做配置的,我们可以看到已经有…...

Hash table类算法【leetcode】

哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素 那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。 例如要查询一个名字是否在这所学校里。 要枚举的话时间复杂度是O(n),但如果使用哈希…...

多算法模型(BI-LSTM GRU Mamba ekan xgboost)实现功率预测

概述 本项目旨在通过结合多算法模型网络实现功率预测。包括数据处理、特征工程、模型训练、模型推理和结果输出,最终结果以 JSON 格式返回。 代码地址:代码...

html 图片转svg 并使用svg路径来裁剪html元素

1.png转svg 工具地址: Vectorizer – 免费图像矢量化 打开svg图片,复制其中的path中的d标签的路径 查看生成的svg路径是否正确 在线SVG路径预览工具 - UU在线工具 2.在html中使用svg路径 <svg xmlns"http://www.w3.org/2000/svg" width"318px" height…...

贴代码框架PasteForm特性介绍之select,selects,lselect和reload

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…...

【Redis】实现异步秒杀功能

一、将判断条件提前缓存到redis中 将判断条件缓存到redis中&#xff0c;如果判断成功直接操作redis中的数据&#xff0c;然后将数据写入redis&#xff0c;如果成功返回一个值。然后根据这个值判断是否成功&#xff0c;如果成功把用户id&#xff0c;优惠卷id&#xff0c;订单id存…...

React的API✅

createContext createContext要和useContext配合使用&#xff0c;可以理解为 “React自带的redux或mobx” &#xff0c;事实上redux就是用context来实现的。但是一番操作下来我还是感觉&#xff0c;简单的context对视图的更新的细粒度把控比不上mobx&#xff0c;除非配合memo等…...

2024亚太杯数学建模C题【Development Analyses and Strategies for Pet Industry 】思路详解

C&#xff1a;宠物行业及相关产业的发展分析与战略 随着人们消费观念的发展&#xff0c;宠物行业作为一个新兴产业&#xff0c;正在全球范围内逐渐积聚势头&#xff0c;这得益于快速的经济发展和人均收入的提高。1992年&#xff0c;中国小动物保护协会成立&#xff0c;随后1993…...

使用Notepad++工具去除重复行

使用Notepad工具去除重复行 参考链接&#xff1a;https://blog.csdn.net/londa/article/details/108981396 一 、使用正则表达式 1、对文本进行排序&#xff0c;让重复行排在一起 2、使用正则表达式替换&#xff08;注意&#xff09;^(.*?)$\s?^(?.*^\1$) 在替换时选择正…...

Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~

AI 驱动 3D 动画 大家好&#xff0c;我是石小石&#xff01;随着 Web 技术的发展&#xff0c;Three.js 成为构建 3D 图形和动画的主流工具。与此同时&#xff0c;人工智能&#xff08;AI&#xff09;在图像处理、动作生成等领域表现出强大能力。将 AI 与 Three.js 结合&#x…...

VScode clangd插件安装

前提 在VScode中写C代码时&#xff0c;总会用到 C/C 这个插件&#xff0c;也就自然而然地使用了这个插件带来的代码跳转和代码提示功能。但是当代码变地很多时&#xff0c;就会变得非常慢。所以经过调查后弃用C/C 插件的这个功能&#xff0c;使用 clangd 这个插件来提示C代码和…...

Swift从0开始学习 对象和类 day3

类&#xff08;Class&#xff09; 是一种类型或模板&#xff0c;描述了对象的特征和行为。对象&#xff08;Object&#xff09; 是类的实例&#xff0c;实际的实体&#xff0c;拥有自己的数据。 新入门的教学都喜欢用“人”来举例为类&#xff0c;在这里我也用“人”吧 //&…...

Linux——从命令行配置网络

1.使用nmcli添加静态网络连接 nmcli con add con-name static-addr \ ifname eth0 type ethernet ipv4.method manual ipv4.dns 172.25.250.220 \ ipv4.addresses 172.25.250.10/24 ipv4.gateway 172.25.250.254 命令概述 这是一条使用 nmcli&#xff08;NetworkManager 命令…...

RabbitMQ实现异步下单与退单

前言&#xff1a; 在电商项目中的支付模块也是一个很重要的模块&#xff0c;其中下订操作以及退订操作就是主要的操作。其次的下单是同步下单&#xff0c;也就是第三方支付、数据库扣减、积分增加、等等其他业务操作&#xff0c;等待全部执行完毕后向用户返回成功响应请求。对…...

[Python] 编程入门:理解变量类型

文章目录 [toc] 整数常见操作 浮点数字符串字符串中混用引号问题字符串长度计算字符串拼接 布尔类型动态类型特性类型转换结语 收录专栏&#xff1a;[Python] 在编程中&#xff0c;变量是用于存储数据的容器&#xff0c;而不同的变量类型则用来存储不同种类的数据。Python 与 C…...

C++ —— 剑斩旧我 破茧成蝶—C++11

江河入海&#xff0c;知识涌动&#xff0c;这是我参与江海计划的第2篇。 目录 1. C11的发展历史 2. 列表初始化 2.1 C98传统的{} 2.2 C11中的{} 2.3 C11中的std::initializer_list 3. 右值引用和移动语义 3.1 左值和右值 3.2 左值引用和右值引用 3.3 引用延长生命周期…...

Perl 简介

Perl 简介 Perl 是一种高级、通用、解释型、动态编程语言。由 Larry Wall 于 1987 年首次发布&#xff0c;它结合了 C、sed、awk 和 shell 脚本语言的特性。Perl 最初被设计用于文本处理&#xff0c;如报告生成和文件转换&#xff0c;但随着时间的推移&#xff0c;它已经发展成…...

Transformer中的Self-Attention机制如何自然地适应于目标检测任务

Transformer中的Self-Attention机制如何自然地适应于目标检测任务&#xff1a; 特征图的降维与重塑 首先&#xff0c;Backbone&#xff08;如ResNet、VGG等&#xff09;会输出一个特征图&#xff0c;这个特征图通常具有较高的通道数、高度和宽度&#xff08;例如CHW&#xff…...

【Linux篇】初学Linux,如何快速搭建Linux开发环境

文章目录 前言1. Linux背景介绍1.1 UNIX的发展历史1.2 Linux的发展历史 2. 企业应用现状3. 开源3.1 探索Linux源代码3.2 开源 VS 闭源 4. Linux的版本4.1 技术线4.2 商业产品线 5. os概念&#xff0c;定位6. 搭建Linux环境6.1 Linux环境的搭建方式6.2 购买云服务器 7. 使用XShe…...

竞赛思享会 | 2024年第十届数维杯国际数学建模挑战赛D题【代码+演示】

Hello&#xff0c;这里是Easy数模&#xff01;以下idea仅供参考&#xff0c;无偿分享&#xff01; 题目背景 本题旨在通过对中国特定城市的房产、人口、经济、服务设施等数据进行分析&#xff0c;评估其在应对人口老龄化、负增长趋势和极端气候事件中的韧性与可持续发展能力。…...

vim 使用技巧

使用技巧 正常模式&#xff08;Normal Mode&#xff09;插入模式&#xff08;Insert Mode&#xff09;命令模式&#xff08;Command Mode&#xff09; vim常用三种模式包括正常模式&#xff0c;插入模式&#xff0c;命令模式。 正常模式&#xff08;Normal Mode&#xff09; 进…...

CSS-flex布局

flex常用语法 display: flex 父级元素相关 flex-direction 主轴方向【水平方向&#xff08;默认&#xff09;、垂直方向】justify-content 主轴上的对齐方式【flex-end结束对齐、space-between两端对齐、center】align-items 交叉轴的对齐方式【center、flex-end】flex-wrap…...