Pytorch的自动求导模块
文章目录
- torch.autograd.backward()
- 基本用法
- 非标量张量的反向传播
- 保留计算图
- 指定输入张量
- 高阶梯度计算
- 与 y.backward() 的区别
- torch.autograd.grad()
- 基本用法
- 非标量张量的梯度
- 高阶梯度计算
- 多输入、多输出的梯度计算
- 未使用的输入张量
- 保留计算图
- 与 backward() 的区别
torch.autograd.backward()
该函数实现自动求导梯度,函数如下:
torch.autograd.backward(tensors, grad_tensors=None, retain_graph=False, create_graph=False, inputs=None)
参数介绍:
- tensors: 需要对其进行反向传播的目标张量(或张量列表),例如:loss。
这些张量通常是计算图的最终输出。 - grad_tensors:与 tensors 对应的梯度权重(或权重列表)。
如果 tensors 是标量张量(单个值),可以省略此参数。
如果 tensors 是非标量张量(如向量或矩阵),则必须提供 grad_tensors,表示每个张量的梯度权重。例如:当有多个loss需要计算梯度时,需要设置每个loss的权值。 - retain_graph:是否保留计算图。
默认值为 False,即反向传播后会释放计算图。如果需要多次反向传播,需设置为 True。 - create_graph: 是否创建一个新的计算图,用于高阶梯度计算。
默认值为 False,如果需要计算二阶或更高阶梯度,需设置为 True。 - inputs: 指定需要计算梯度的输入张量(或张量列表)。
如果指定了此参数,只有这些张量的 .grad 属性会被更新,而不是整个计算图中的所有张量。
基本用法
import torch # 定义张量并启用梯度计算
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2 # y = x^2 # 使用 torch.autograd.backward() 触发反向传播
torch.autograd.backward(y) # 查看梯度
print(x.grad) # 输出:4.0 (dy/dx = 2x, 当 x=2 时,dy/dx=4)
非标量张量的反向传播
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x ** 2 # y = [x1^2, x2^2, x3^2] # 指定 grad_tensors 权重
grad_tensors = torch.tensor([1.0, 1.0, 1.0]) # 权重
torch.autograd.backward(y, grad_tensors=grad_tensors) # 查看梯度
print(x.grad) # 输出:[2.0, 4.0, 6.0] (dy/dx = 2x)
保留计算图
如果需要多次调用反向传播,可以设置 retain_graph=True。
x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 # y = x^3 # 第一次反向传播
torch.autograd.backward(y, retain_graph=True)
print(x.grad) # 输出:12.0 (dy/dx = 3x^2, 当 x=2 时,dy/dx=12) # 第二次反向传播
torch.autograd.backward(y, retain_graph=True)
print(x.grad) # 输出:24.0 (梯度累积,12.0 + 12.0)
指定输入张量
通过 inputs 参数,可以只计算指定张量的梯度,而忽略其他张量。
x = torch.tensor(2.0, requires_grad=True)
z = torch.tensor(3.0, requires_grad=True)
y = x ** 2 + z ** 3 # y = x^2 + z^3 # 只计算 x 的梯度
torch.autograd.backward(y, inputs=[x])
print(x.grad) # 输出:4.0 (dy/dx = 2x)
print(z.grad) # 输出:None (未计算 z 的梯度)
高阶梯度计算
通过设置 create_graph=True,可以构建新的计算图,用于计算高阶梯度。
x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 # y = x^3 # 第一次反向传播,创建新的计算图
torch.autograd.backward(y, create_graph=True)
print(x.grad) # 输出:12.0 (dy/dx = 3x^2) # 计算二阶梯度
x_grad = x.grad
x_grad.backward()
print(x.grad) # 输出:18.0 (d^2y/dx^2 = 6x)
与 y.backward() 的区别
-
灵活性:
- torch.autograd.backward() 更灵活,可以对多个张量同时进行反向传播,并指定梯度权重。
- y.backward() 是对单个张量的简单封装,适合常见场景。对多个loss求导时,需要指定gradient和grad_outputs相同作用。
-
梯度权重:
- torch.autograd.backward() 需要显式提供 grad_tensors 参数(如果目标张量是非标量)。
- y.backward() 会自动处理标量张量,非标量张量需要手动传入权重。
-
输入控制:
- torch.autograd.backward() 可以通过 inputs 参数指定只计算某些张量的梯度。
- y.backward() 无法直接控制,只会更新计算图中所有相关张量的 .grad。
torch.autograd.grad()
torch.autograd.grad() 是 PyTorch 中用于计算张量梯度的函数,与 backward() 不同的是,它不会更新张量的 .grad 属性,而是直接返回计算的梯度值。它适用于需要手动获取梯度值而不修改计算图中张量的 .grad 属性的场景。
torch.autograd.grad( outputs, inputs, grad_outputs=None, retain_graph=False, create_graph=False, only_inputs=True, allow_unused=False
)
参数介绍:
- outputs:
目标张量(或张量列表),即需要对其进行求导的输出张量。 - inputs:
需要计算梯度的输入张量(或张量列表)。
这些张量必须启用了 requires_grad=True。 - grad_outputs:
与 outputs 对应的梯度权重(或权重列表)。
如果 outputs 是标量张量,可以省略此参数;如果是非标量张量,则需要提供权重,表示每个输出张量的梯度权重。 - retain_graph:
是否保留计算图。
默认值为 False,即反向传播后会释放计算图。如果需要多次计算梯度,需设置为 True。 - create_graph:
是否创建一个新的计算图,用于高阶梯度计算。
默认值为 False,如果需要计算二阶或更高阶梯度,需设置为 True。 - only_inputs:
是否只对 inputs 中的张量计算梯度。
默认值为 True,表示只计算 inputs 的梯度。 - allow_unused:
是否允许 inputs 中的某些张量未被 outputs 使用。
默认值为 False,如果某些 inputs 未被 outputs 使用,会抛出错误。如果设置为 True,未使用的张量的梯度会返回 None。
返回值:
- 返回一个元组,包含 inputs 中每个张量的梯度值。
- 如果某个输入张量未被 outputs 使用,且 allow_unused=True,则对应的梯度为 None。
基本用法
import torch # 定义张量并启用梯度计算
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2 # y = x^2 # 使用 torch.autograd.grad() 计算梯度
grad = torch.autograd.grad(y, x)
print(grad) # 输出:(4.0,) (dy/dx = 2x, 当 x=2 时,dy/dx=4)
非标量张量的梯度
当目标张量是非标量时,需要提供 grad_outputs 参数:
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x ** 2 # y = [x1^2, x2^2, x3^2] # 指定 grad_outputs 权重
grad_outputs = torch.tensor([1.0, 1.0, 1.0]) # 权重
grad = torch.autograd.grad(y, x, grad_outputs=grad_outputs)
print(grad) # 输出:(tensor([2.0, 4.0, 6.0]),) (dy/dx = 2x)
高阶梯度计算
通过设置 create_graph=True,可以计算高阶梯度:
x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 # y = x^3 # 第一次计算梯度
grad = torch.autograd.grad(y, x, create_graph=True)
print(grad) # 输出:(12.0,) (dy/dx = 3x^2) # 计算二阶梯度
grad2 = torch.autograd.grad(grad[0], x)
print(grad2) # 输出:(6.0,) (d^2y/dx^2 = 6x)
多输入、多输出的梯度计算
可以对多个输入和输出同时计算梯度:
x = torch.tensor(2.0, requires_grad=True)
z = torch.tensor(3.0, requires_grad=True)
y1 = x ** 2 + z ** 3 # y1 = x^2 + z^3
y2 = x * z # y2 = x * z # 对多个输入计算梯度
grads = torch.autograd.grad([y1, y2], [x, z], grad_outputs=[torch.tensor(1.0), torch.tensor(1.0)])
print(grads) # 输出:(7.0, 11.0) (dy1/dx + dy2/dx, dy1/dz + dy2/dz)
未使用的输入张量
如果某些输入张量未被目标张量使用,需设置 allow_unused=True:
x = torch.tensor(2.0, requires_grad=True)
z = torch.tensor(3.0, requires_grad=True)
y = x ** 2 # y = x^2 # z 未被 y 使用
grad = torch.autograd.grad(y, [x, z], allow_unused=True)
print(grad) # 输出:(4.0, None) (dy/dx = 4, z 未被使用,梯度为 None)
保留计算图
如果需要多次计算梯度,可以设置 retain_graph=True:
x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 # y = x^3 # 第一次计算梯度
grad1 = torch.autograd.grad(y, x, retain_graph=True)
print(grad1) # 输出:(12.0,) # 第二次计算梯度
grad2 = torch.autograd.grad(y, x)
print(grad2) # 输出:(12.0,)
与 backward() 的区别
- 梯度存储:
- torch.autograd.grad() 不会修改张量的 .grad 属性,而是直接返回梯度值。
- backward() 会将计算的梯度累积到 .grad 属性中。
- 灵活性:
- torch.autograd.grad() 可以对多个输入和输出同时计算梯度,并支持未使用的输入张量。
- backward() 只能对单个输出张量进行反向传播。
- 高阶梯度:
- torch.autograd.grad() 支持通过 create_graph=True 计算高阶梯度。
- backward() 也支持高阶梯度,但需要手动设置 create_graph=True。
相关文章:
Pytorch的自动求导模块
文章目录 torch.autograd.backward()基本用法非标量张量的反向传播保留计算图指定输入张量高阶梯度计算 与 y.backward() 的区别torch.autograd.grad()基本用法非标量张量的梯度高阶梯度计算多输入、多输出的梯度计算未使用的输入张量保留计算图 与 backward() 的区别 torch.au…...
【React】- 跨域PDF预览、下载(改文件名)、打印
我们经常会碰到跨域来方位PDF,同时需要下载、打印的需求,通常由于浏览器的安全策略,可以预览,但是下载和打印可能会受限,这时候怎么办呢? 1.创建一个隐藏的标签 要下载 iframe 中的 PDF 文件,…...
HuggingFace 模型文件详解:如何加载本地模型?
HuggingFace 模型文件详解 在使用 HuggingFace 下载大型语言模型(如 LLaMA-3-1-8B)后,会发现模型目录下包含多个文件和文件夹。本文将详细介绍这些文件的作用以及它们在模型加载和推理过程中的功能。 文件结构总览 models--meta-llama--Lla…...
Boost之buffer
目录 一、定义和介绍 二、示例 1、点 单点 多点 2、线 3、面 单面 多面 三、总结 四、测试代码 一、定义和介绍 buffer函数是boost库(algorithms)算法模块中的构建缓冲区函数。 其函数原型为(此处为带策略型): template<typename GeometryIn, typename MultiPolygon, typen…...
[redux] ts声明useSelector和useDispatch
先安装 安装 | Redux 中文官网 npm install react-redux npm install reduxjs/toolkit 定义一个切片 import { createSlice } from reduxjs/toolkit;const userSlice createSlice({name: user,initialState: {name: lsm,age: 24,},reducers: {}, }); //注意这里写导出redu…...
计算机网络 (19)扩展的以太网
前言 以太网(Ethernet)是一种局域网(LAN)技术,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网技术不断演进,从最初的10Mbps到如今的10Gbps、25Gbps、40Gbps、100Gbps等,已成…...
Ubuntu 23.10 换源
查看当前Ubuntu系统的版本 使用命令: lsb_release -a 中科大源: deb https://mirrors.ustc.edu.cn/ubuntu-old-releases/ubuntu/ mantic main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu-old-releases/ubuntu/ man…...
如何在 Ubuntu 22.04 上优化 Apache 以应对高流量网站教程
简介 在本教程中,我们将学习如何优化 Apache 以应对高流量网站。 当运行高流量网站时,确保你的 Apache Web 服务器得到优化对于有效处理负载至关重要。在本指南中,我们将介绍配置 Apache 以提高性能和可扩展性的基本技巧。 为高流量网站优…...
Android 性能优化:内存优化(实践篇)
1. 前言 前一篇文章Android性能优化:内存优化 (思路篇) 大概梳理了Android 内存原理和优化的必要性及应该如何优化,输出了一套短期和长期内存优化治理的SOP方案。 那么这一篇文章就总结下我最近在做内存优化如何实践的࿰…...
开源数据集成平台白皮书重磅发布《Apache SeaTunnel 2024用户案例合集》!
2025年新年临近,Apache SeaTunnel 社区用户案例精选📘也跟大家见面啦!在过去的时间里,SeaTunnel 社区持续成长,吸引了众多开发者的关注与支持。 为了致谢一路同行的伙伴,也为了激励更多人加入技术共创&…...
用python编写一个放烟花的小程序
import pygame import random # 代码解释及使用说明: # 首先,导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制,random 用于生成随机数。 # 初始化 pygame,并设置屏幕尺寸为 800x600 像素,设置窗口标题为…...
以一个实际例子来学习Linux驱动程序开发之“设备类”的相关知识【利用设备类实现对同一设备类下的多个LED灯实现点亮或关闭】
前言 对于一个设备的驱动程序来说,其实上层用户主要看到的、用到的就是设备文件和设备类,当然用得最多的是设备文件,虽然设备类用得不多,但也是每一个设备注册实例化时必须要用到的东西,本篇博文就以一个简单的例子说…...
培训机构Day22
今天主要还是围绕着jquery讲解的,没有什么可说的。 知识点: 常用事件类型: 1.click:单击事件。鼠标,或键盘都可以触发。 2.dblclick:双击事件。 3.contextmenu:右键事件。 4.键盘相关事件&…...
Synopsys软件基本使用方法
Synopsys软件基本使用方法 1 文件说明2 编译流程3 查看波形4 联合仿真 本文主要介绍Synopsys软件vcs、verdi的基本使用方法,相关文件可从 GitHub下载。 1 文件说明 创建verilog源文件add.v、mult.v、top.vmodule add (input signed [31:0] dina,input signed [3…...
信息科技伦理与道德1:研究方法
1 问题描述 1.1 讨论? 请挑一项信息技术,谈一谈为什么认为他是道德的/不道德的,或者根据使用场景才能判断是否道德。判断的依据是什么(自身的道德准则)?为什么你觉得你的道德准则是合理的,其他…...
手机租赁平台开发实用指南与市场趋势分析
内容概要 在当今快速变化的科技时代,手机租赁平台的发展如火如荼。随着越来越多的人希望使用最新款的智能手机,但又不愿意承担昂贵的购机成本,手机租赁平台应运而生。这种模式不仅为用户提供了灵活的选择,还为企业创造了新的商机…...
ABAQUS三维Voronoi晶体几何建模
材料晶体塑性理论与细观尺度上晶体几何模型相融合的模拟方法为探究材料在塑性变形过程中的行为机制以及晶体材料优化开辟了新途径。本案例演示在CAD软件内通过Voronoi建立晶体三维模型,并将模型导入到Abaqus CAE内,完成晶体材料的有限元建模。 在AutoC…...
职场常用Excel基础04-二维表转换
大家好,今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中,二维表(也称为矩阵或表格)是一种组织数据的方式,其中数据按照行和列的格式进行排列。然而,在实际的数据分析过程中,我们常…...
如何使用 ChatGPT Prompts 写学术论文?
第 1 部分:学术写作之旅:使用 ChatGPT Prompts 进行学术写作的结构化指南 踏上学术写作过程的结构化旅程,每个 ChatGPT 提示都旨在解决特定方面,确保对您的主题进行全面探索。 制定研究问题: “制定一个关于量子计算的社会影响的研究问题,确保清晰并与您的研究目标保持一…...
【深度学习】Java DL4J基于 LSTM 构建新能源预测模型
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…...
Jetson系列部署YOLOv8模型教程
简介 NVIDIA Jetson系列是专为边缘计算设计的紧凑型计算模块,其目标用户为AI开发者、嵌入式系统工程师以及需要在设备端实时进行数据处理与AI推断的创新者。通过提供灵活的硬件平台,结合NVIDIA强大的GPU计算资源,Jetson系列能够支持复杂的机…...
【HAProxy】如何在Ubuntu下配置HAProxy服务器
HAProxy 是一款免费、开源且强大的反向代理程序,它为 HTTP 和 TCP 基础的应用提供了高可用性、负载均衡以及代理功能,因此对于管理高流量服务器(或 Web 应用)来说,通过将负载分散到多个节点服务器上,它是一…...
gesp(C++一级)(7)洛谷:B3863:[GESP202309 一级] 小明的幸运数
gesp(C一级)(7)洛谷:B3863:[GESP202309 一级] 小明的幸运数 题目描述 所有个位数为 k k k 的正整数,以及所有 k k k 的倍数,都被小明称为“ k k k 幸运数”。小明想知道正整数 L L L 和 R R R 之间&a…...
【数据库系统概论】数据库完整性与触发器--复习
在数据库系统概论中,数据库完整性是指确保数据库中数据的准确性、一致性和有效性的一组规则和约束。数据库完整性主要包括实体完整性、参照完整性和用户定义完整性。以下是详细的复习内容: 1. 数据库完整性概述 数据库完整性是指一组规则,这…...
【YOLOv8模型网络结构图理解】
YOLOv8模型网络结构图理解 1 YOLOv8的yaml配置文件2 YOLOv8网络结构2.1 Conv2.2 C3与C2f2.3 SPPF2.4 Upsample2.5 Detect层 1 YOLOv8的yaml配置文件 YOLOv8的配置文件定义了模型的关键参数和结构,包括类别数、模型尺寸、骨干(backbone)和头部…...
使用 commitlint 和 husky 检查提交描述是否符合规范要求
在上一小节中,我们了解了 Git hooks 的概念,那么接下来我们就使用 Git hooks 来去校验我们的提交信息。 要完成这么个目标,那么我们需要使用两个工具: 注意:npm 需要在 7.x 以上版本。 1. commitlint 用于检查提交信…...
QT集成IntelRealSense双目摄像头3,3D显示
前两篇文章,介绍了如何继承intel realsense相机和opengl。 这里介绍如何给深度数据和色彩数据一块显示到opengl里面。 首先,需要了解深度数据和彩色数据是如何存储的。先说彩色数据。彩色图像一般都是RGB,也就是每个像素有三个字节…...
Vue 中el-table-column 进行循环,页面没渲染成功
文章目录 前言效果图代码示例可能出现的问题及原因解决思路 前言 实现效果:el-table-column 进行循环,使之代码简化 遇到的问题: data进行默认赋值,操作列的删除都可以出来,其他表格里面的数据没出来 效果图 示例&am…...
渗透测试-非寻常漏洞案例
声明 本文章所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法. 此文章不允许未经授权转发至除先知社区以外的其它平台!࿰…...
Spring Boot 实战篇(四):实现用户登录与注册功能
目录 Spring Boot 实战篇(四):实现用户登录与注册功能 一、用户注册功能 (一)前端页面设计(简要提及) (二)后端实现 二、用户登录功能 (一)…...
VScode SSH 错误:Got bad result from install script 解決
之前vscode好好的,某天突然连接报错如下 尝试1. 服务器没有断开,ssh可以正常连接 2. 用管理员权限运行vscode,无效 3. 删除服务器上的~/.vscode-server 文件夹,无效 试过很多后,原来很可能是前一天anaconda卸载导致注册表项 步…...
openGauss与GaussDB系统架构对比
openGauss与GaussDB系统架构对比 系统架构对比openGauss架构GaussDB架构 GaussDB集群管理组件 系统架构对比 openGauss架构 openGauss是集中式数据库系统,业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并…...
【ArcGISPro/GeoScenePro】检查并处理高程数据
数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…...
WebRTC的三大线程
WebRTC中的三个主要线程: signaling_thread,信号线程:用于与应用层交互worker_thread,工作线程(最核心):负责内部逻辑处理network_thread,网络线程:负责网络数据包的收发…...
HTML-文本标签
历史上,网页的主要功能是文本展示。所以,HTML 提供了大量的文本处理标签。 1.<div> <div>是一个通用标签,表示一个区块(division)。它没有语义,如果网页需要一个块级元素容器,又没…...
C# 在PDF中添加和删除水印注释 (Watermark Annotation)
目录 使用工具 C# 在PDF文档中添加水印注释 C# 在PDF文档中删除水印注释 PDF中的水印注释是一种独特的注释类型,它通常以透明的文本或图片形式叠加在页面内容之上,为文档添加标识或信息提示。与传统的静态水印不同,水印注释并不会永久嵌入…...
Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结
注:因为本人也是第一次接入广告与支付SDK相关的操作,网上也查了很多教程,很多也都是只言片语或者缺少一些关键步骤的说明,导致本人也是花了很多时间与精力踩了很多的坑才搞定,发出来也是希望能帮助到其他人在遇到相似问…...
docker部署项目
docker部署项目 (加载tar包:docker image load -i mysql.tar) 一、jdk环境配置 1.jdk下载地址 --Java Archive | Oracle 中国 --选择好版本进入 --下载Linux x64 Compressed Archive的链接 2.解压 --创建文件夹:mkdir /ro…...
C# 设计模式(创建型模式):工厂模式
C# 设计模式(创建型模式):工厂模式 引言 在软件设计中,创建型模式是用来创建对象的设计模式,它们帮助我们将对象的创建过程从业务逻辑中分离出来,减少代码的重复性和耦合度。工厂模式作为创建型设计模式之…...
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...
Lumos学习王佩丰Excel第二十三讲:Excel图表与PPT
一、双坐标柱形图的补充知识 1、主次坐标设置 2、主次坐标柱形避让(通过增加两个系列,挤压使得两个柱形挨在一起) 增加两个系列 将一个系列设置成主坐标轴,另一个设成次坐标轴 调整系列位置 二、饼图美化 1、饼图美化常见设置 …...
【Vue】v-if 和 :is 都是 Vue 中的指令,但它们用于不同的目的和场景
v-if v-if 是一个条件渲染指令,用于根据表达式的真假值来决定是否渲染一块内容。当 v-if 的表达式为真(truthy)时,Vue 会确保元素被渲染到 DOM 中;当表达式为假(falsy)时,元素不会被…...
private static final Logger log = LoggerFactory.getLogger()和@Slf4j的区别
一、代码方面 - private static final Logger log LoggerFactory.getLogger()方式 详细解释 这是一种传统的获取日志记录器(Logger)的方式。LoggerFactory是日志框架(如 Log4j、Logback 等)提供的工厂类,用于创建Lo…...
【项目】基于趋动云平台的Stable Diffusion开发
【项目】基于趋动云平台的Stable Diffusion开发 (一)登录趋动云(二)创建项目:(三)初始化开发环境:(四)运行代码(五)运行模型 …...
Git的.gitignore文件详解与常见用法
诸神缄默不语-个人CSDN博文目录 在日常使用 Git 进行版本控制时,我们经常会遇到一些不需要被提交到远程仓库的文件(例如日志文件、临时配置文件、环境变量文件等)。为了忽略这些文件的提交,Git 提供了一个非常有用的功能…...
客户端二维码优化居中和背景
原始 处理后...
Linux 安装运行gatk的教程
1.下载安装 wget https://github.com/broadinstitute/gatk/releases/download/4.1.8.1/gatk-4.1.8.1.zip2.解压 unzip *.zip3.查看 gatk --help 如下显示表示安装成功: 注意:仅限在该包所在位置的路径下能使用...
C++string类
1.为什么学习string类? 1.1C语言中的字符串 C语言中,字符串是以‘\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OO…...
下载linux aarch64版本的htop
htop代码网站似乎没有编译好的各平台的包,而自己编译需要下载一些工具,比较麻烦。这里找到了快速下载和使用的方法,记录一下。 先在linux电脑上执行: mkdir htop_exe cd htop_exe apt download htop:arm64 # 会直接下载到当前目…...
MYSQL---------支持数据类型
数值类型 整数类型 TINYINT:通常用于存储小范围的整数,范围是-128到127或0到255(无符号)。例如,存储年龄可以使用TINYINT类型。示例:CREATE TABLE users (age TINYINT);SMALLINT:范围比TINYINT…...