小白的进阶之路-人工智能从初步到精通pytorch的基本流程详解-1
Pytorch大致流程一览表:
主题 | 内容 |
---|---|
1 准备数据 | 数据几乎可以是任何东西,但在开始之前,我们将创建一条简单的直线 |
2 建立模型 | 在这里,我们将创建一个模型来学习数据中的模式,我们还将选择损失函数,优化器并构建一个训练循环。 |
3 拟合模型 | 我们已经有了数据和模型,现在让模型尝试在(训练)数据中找到模式。 |
4预测和评估模型(推断) | 我们的模型在数据中发现了模式,让我们将其发现与实际(测试)数据进行比较。 |
5 保存和载入模型 | 您可能希望在其他地方使用您的模型,或者稍后再使用它,我们将在这里介绍它。 |
6 结合 | 让我们把上面所有的东西结合起来。 |
好了,现在我们开始!
我们去将使用torch,torch.nn (nn代表神经网络,这个包包含在PyTorch中创建神经网络的构建块)和matplotlib。
import torch
from torch import nn # nn contains all of PyTorch's building blocks for neural networks
import matplotlib.pyplot as plt# Check PyTorch version
print(torch.__version__)
输出为:
2.7.0+cu118
下面进入第一个主题
1 数据准备
机器学习是一个由两部分组成的游戏:
首先,把你的数据,不管它是什么,转换成数字(一种表示)。
最后,选择或构建一个模型来尽可能地学习表征。
有时这两个步骤可以同时完成。
但是如果你没有数据呢?
嗯,这就是我们现在的处境。
没有数据。
但是我们可以创造一些。
让我们将数据创建为一条直线。
我们将使用线性回归来创建具有已知参数的数据(可以通过模型学习的东西),然后我们将使用PyTorch来查看我们是否可以构建模型来使用梯度下降来估计这些参数。
如果上面的术语现在没有多大意义,不要担心,我们将看到它们的实际应用,我将在下面提供额外的资源,以便您可以了解更多信息。
# Create *known* parameters
weight = 0.7
bias = 0.3# Create data
start = 0
end = 1
step = 0.02
X = torch.arange(start, end, step).unsqueeze(dim=1)
y = weight * X + biasprint(X[:10])
print( y[:10])
输出为:
tensor([[0.0000],[0.0200],[0.0400],[0.0600],[0.0800],[0.1000],[0.1200],[0.1400],[0.1600],[0.1800]])
tensor([[0.3000],[0.3140],[0.3280],[0.3420],[0.3560],[0.3700],[0.3840],[0.3980],[0.4120],[0.4260]])
现在我们将着手构建一个可以学习X(特征)和y(标签)之间关系的模型。
将数据分成训练集和测试集
我们有一些数据。
但在我们建立模型之前,我们需要把它拆开。
机器学习项目中最重要的步骤之一是创建一个训练和测试集(如果需要,还可以创建一个验证集)。
数据集的每次拆分都有一个特定的目的:
拆分项 | 目的 | 数据比例 | 频率 |
---|---|---|---|
训练集 | 模型从这些数据中学习(比如你在学期中学习的课程材料) | 60~80% | 总是 |
验证集 | 模型会根据这些数据进行调整(就像期末考试前的练习考试一样) | 10~20% | 经常 |
测试集 | 模型根据这些数据进行评估,以测试它学到了什么(就像你在学期末参加的期末考试一样) | 10~20% | 总是 |
现在,我们只使用一个训练和测试集,这意味着我们将有一个数据集供我们的模型学习和评估。
我们可以通过分割X和y张量来创建它们。
[!CAUTION]
注意:当处理真实数据时,这一步通常在项目开始时完成(测试集应该始终与所有其他数据分开)。我们希望我们的模型从训练数据中学习,然后在测试数据上评估它,以获得它对未见过的例子的泛化程度的指示。
# Create train/test split
train_split = int(0.8 * len(X)) # 80% of data used for training set, 20% for testing
X_train, y_train = X[:train_split], y[:train_split]
X_test, y_test = X[train_split:], y[train_split:]print(len(X_train))
print( len(y_train))
print( len(X_test))
print( len(y_test))
输出为:
40
40
10
10
很好,我们有40个训练样本(X_train & y_train)和10个测试样本(X_test & y_test)。
我们创建的模型将尝试学习X_train和y_train之间的关系,然后我们将评估它在X_test和y_test上的学习结果。
但现在我们的数据只是页面上的数字。
让我们创建一个函数来形象化。
def plot_predictions(train_data=X_train, train_labels=y_train, test_data=X_test, test_labels=y_test, predictions=None):"""Plots training data, test data and compares predictions."""plt.figure(figsize=(10, 7))# Plot training data in blueplt.scatter(train_data, train_labels, c="b", s=4, label="Training data")# Plot test data in greenplt.scatter(test_data, test_labels, c="g", s=4, label="Testing data")if predictions is not None:# Plot the predictions in red (predictions were made on the test data)plt.scatter(test_data, predictions, c="r", s=4, label="Predictions")# Show the legendplt.legend(prop={"size": 14});plot_predictions()
plt.show()
结果为:
现在我们的数据不再是纸上的数字,而是一条直线。
[!CAUTION]
注意:现在是向您介绍数据浏览器的座右铭的好时机……“具象化!”
当你在处理数据并将其转化为数字时,想想这个,如果你能将一些东西形象化,它就会对理解产生神奇的作用。
机器喜欢数字,我们人类也喜欢数字,但我们也喜欢观察事物。
2 构建模型
现在我们有了一些数据,让我们建立一个模型,用蓝点来预测绿点。
我们马上就开始。
我们将首先编写代码,然后解释所有内容。
让我们使用纯PyTorch复制一个标准线性回归模型。
# Create a Linear Regression model class
class LinearRegressionModel(nn.Module): # <- almost everything in PyTorch is a nn.Module (think of this as neural network lego blocks)def __init__(self):super().__init__() self.weights = nn.Parameter(torch.randn(1, # <- start with random weights (this will get adjusted as the model learns)dtype=torch.float), # <- PyTorch loves float32 by defaultrequires_grad=True) # <- can we update this value with gradient descent?)self.bias = nn.Parameter(torch.randn(1, # <- start with random bias (this will get adjusted as the model learns)dtype=torch.float), # <- PyTorch loves float32 by defaultrequires_grad=True) # <- can we update this value with gradient descent?))# Forward defines the computation in the modeldef forward(self, x: torch.Tensor) -> torch.Tensor: # <- "x" is the input data (e.g. training/testing features)return self.weights * x + self.bias # <- this is the linear regression formula (y = m*x + b)
好了,上面有很多内容,但是让我们一点一点地分解。
PyTorch模型构建要领
PyTorch有四个基本模块,你可以用它来创建几乎任何你能想到的神经网络。
他们是torch. nn, torch. optim, torch.utils.data.Dataset 以及torch.utils.data.DataLoader.。现在,我们将重点关注前两个,稍后再讨论另外两个(尽管您可能能够猜到它们的作用)。
PyTorch 模块 | 功能 |
---|---|
torch. nn | 包含计算图的所有构建块(本质上是以特定方式执行的一系列计算) |
torch.nn.Parameter | 存储可与nn. module一起使用的张量。如果requires_grad=True梯度(用于通过梯度下降更新模型参数)是自动计算的,这通常被称为“autograd” |
torch.nn.Module | 所有神经网络模块的基类,神经网络的所有构建块都是子类。如果你在PyTorch中构建一个神经网络,你的模型应该继承nn.Module。需要实现forward()方法。 |
torch.optim | 包含各种优化算法(这些算法告诉模型参数存储在nn中。参数如何最好地改变,以改善梯度下降,从而减少损失)。 |
def forward() | 所有的神经网络。模块子类需要forward()方法,该方法定义了将在传递给特定nn的数据上进行的计算。模块(例如上面的线性回归公式) |
如果上面听起来很复杂,可以这样想,PyTorch神经网络中的几乎所有内容都来自torch.nn,
torch.nn.Module包含较大的构建块(层)
torch.nn.Parameter包含较小的参数,如权重和偏差(将这些放在一起创建nn. module (s))
forward() 告诉较大的块如何对nn. module (s)中的输入(充满数据的张量)进行计算。
torch.optim包含了如何改进nn内参数的优化方法。参数以更好地表示输入数据
检查PyTorch模型的内容
现在我们已经解决了这些问题,让我们用我们创建的类创建一个模型实例,并使用.parameters()检查它的参数。
# Set manual seed since nn.Parameter are randomly initialized
torch.manual_seed(42)# Create an instance of the model (this is a subclass of nn.Module that contains nn.Parameter(s))
model_0 = LinearRegressionModel()# Check the nn.Parameter(s) within the nn.Module subclass we created
print(list(model_0.parameters()))
输出为:
[Parameter containing:
tensor(
相关文章:
小白的进阶之路-人工智能从初步到精通pytorch的基本流程详解-1
Pytorch大致流程一览表: 主题内容1 准备数据数据几乎可以是任何东西,但在开始之前,我们将创建一条简单的直线2 建立模型在这里,我们将创建一个模型来学习数据中的模式,我们还将选择损失函数,优化器并构建一个训练循环。3 拟合模型我们已经有了数据和模型,现在让模型尝试…...
linux kernel 编译
1. 获取内核源码 从官方仓库获取: 访问kernel.org下载所需版本的Linux内核源码压缩包(如linux-x.y.z.tar.xz)。或者使用Git克隆特定版本: bash git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitcd linux-stablegit checkout vX.Y.Z # 切…...
【氮化镓】偏置对GaN HEMT 单粒子效应的影响
2025年5月19日,西安电子科技大学的Ling Lv等人在《IEEE Transactions on Electron Devices》期刊发表了题为《Single-Event Effects of AlGaN/GaN HEMTs Under Different Biases》的文章,基于实验和TCAD仿真模拟方法,研究了单粒子效应对关断状态、半开启状态和开启状态下AlG…...
Assistants API
一、前言 0.1、从轰动一时的 OpenAI DevDay 说起 2023 年 11 月 6 日,OpenAI DevDay 发表了一系列新能力,其中包括:GPT Store 和 Assistants API 这一波操作一度被认为是创业公司终结者 0.2、GPTs 和 Assistants API 本质是降低开发门槛 可操控性和易用性之间的权衡与折中…...
AcWing 223. 阿九大战朱最学——扩展欧几里得算法
题目来源 223. 阿九大战朱最学 - AcWing题库 题目描述 自从朱最学搞定了 QQ 农场以后,就开始捉摸去 QQ 牧场干些事业,不仅在自己的牧场养牛,还到阿九的牧场放牛! 阿九很生气,有一次朱最学想知道阿九牧场奶牛的数量…...
开发指南116-font-size: 0的使用
平台前台的css样式里有几个地方用到了font-size: 0,这是个使用小技巧。原理说明:font-size 属性用于定义元素中文本的大小。当设置 font-size: 0 时,意味着该元素内的文本将不占据空间。当元素的 font-size 设置为零时,该元素内的…...
算法-数对的使用
1、数对可用于数组排序中,并且可记忆化排序前的元素下标 #include<iostream> #include<string> #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10; pair<int, int> a[N]; void solve() {ll n;cin …...
EmoBox:我与 CodeBuddy 共创的 Emoji 表情分类小工具
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 最近我萌生了一个想法,想做一个小而美的工具——一个叫「EmoBox」的 emoji 表情分类应用࿰…...
力扣HOT100之二叉树:199. 二叉树的右视图
这道题没啥好说的,首先定义一个向量来保存每一层的最后一个元素,直接用层序遍历(广度优先搜索)遍历二叉树,然后将每一层的最后一个元素加入到这个向量中即可。属于是二叉树层序遍历的模板题。 /*** Definition for a …...
力扣992做题笔记
左神做法的理论依据 我们可以通过 集合的包含关系 和 具体示例枚举 来直观理解这一推导过程。以下结合题目示例 1 进行详细说明: 示例 1 分析 输入:nums [1,2,1,2,3], k 2 目标:计算恰好包含 2 种不同整数 的子数组个数。 步骤一集合 A…...
特征值与特征向量的计算——PCA的数学基础
特征值与特征向量 定义 令 A {\bm A} A为 n n n \times n nn矩阵,如果存在非零向量 x {\bm x} x使得 A x λ x (1) {\bm A}{\bm x} \lambda {\bm x}\tag{1} Axλx(1) 成立,则称数 λ \lambda λ是矩阵 A {\bm A} A的特征值,称非零向量 x…...
vue2.0 的计算属性
个人简介 👨💻个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...
【数根】2022-1-24
缘由程序设计 -- 数根(2)-编程语言-CSDN问答 void 数根() {//缘由https://ask.csdn.net/questions/7635593?spm1005.2025.3001.5141std::string n;int m 0, a 0;std::cin >> n;while (n[a] ! \0)m n[a] - 0;a 0;while (m)a m - m / 10 * 10…...
【Android】一键创建Keystore + Keystore 参数说明 + 查询SHA256(JDK Keytool Keystore)
一键创建 Android Keystore 的实用方法与参数详解 在 Android 应用开发与发布中,**Keystore(签名文件)**扮演着至关重要的角色。本文将介绍如何通过 .bat 脚本一键创建 Keystore 文件,并详细讲解每一个参数的含义,帮助…...
laravel 通过Validator::make验证后,如何拿到验证后的值
在 Laravel 中,通过 Validator::make 创建的验证器实例验证数据后,可以通过以下方式获取验证后的值: 使用 validate() 方法 调用验证器实例的 validate() 方法,会返回经过验证的数据数组。如果验证失败,该方法会抛出 V…...
centos把jar包配置成服务并设置开机自启
1.准备好jar包,启动路径,日志路径 2.编写启动脚步 vim /etc/systemd/system/test.service [Unit] Descriptionlapis Requiresnetwork.target remote-fs.target ##启动优先级,在下面的服务之后启动 Afterkafka.service zookeeper.service n…...
CentOS相关操作hub(更新中)
CentOS介绍: CentOS(Community Enterprise Operating System)是基于 Red Hat Enterprise Linux(RHEL)源代码编译的开源企业级操作系统,提供与 RHEL 二进制兼容的功能 完全兼容 RHEL,可直接使用…...
数据库(一):分布式数据库
定义 分布式数据库(Distributed Database) 是指: 数据分布在多个物理位置,但对用户透明,表现为一个统一逻辑数据库的系统。 结构模式(三层模式扩展) 层次作用对应实体用户层提供统一视图&…...
人工智能(AI)与BIM:建筑业创新实践的深度融合
一、BIM在建筑领域的发展现状与挑战 作为建筑数字化的核心技术,BIM通过三维模型集成建筑全生命周期信息,已成为工程设计、施工及运维的标准工作流程。当前,BIM在碰撞检测、施工模拟、成本管控等场景的应用已较为成熟,但行业仍面临…...
FIR数字滤波器设计与实现
低通滤波器的设计与实现 打开Matlab ,运行命令filterDesigner,选择FIR 最小二乘或者其它,设置采样频率,和低通滤波器截止频率。点击设计滤波器,如图1: 点击目标生成.C头文件,滤波器系数如下: …...
软件架构之-论高并发下的可用性技术
论高并发下的可用性技术 摘要正文摘要 ;2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船审图机构提供一个便捷化的服务平台。在此项目中,我作为项目组成员参与了项目建设工作,并担任系统架…...
阻塞队列:线程安全与生产者消费者模型解析
一、阻塞队列 阻塞队列就是基于普通队列做出扩展 1.线程安全的 如果针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列不满(其他线程出队列元素)之后 如果针对一个已经空了的队列进行出队列,…...
【时时三省】(C语言基础)用函数实现模块化程序设计
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 为什么要用函数? 已经能够编写一些简单的C程序,但是如果程序的功能比较多,规模比较大,把所有的程序代码都写在一个主函数(main函数)中&#x…...
基于CATIA参数化圆锥建模的自动化插件开发实践——NX建模之圆锥体命令的参考与移植(一)
引言 在CATIA二次开发领域,Python因其灵活性和丰富的库支持逐渐成为高效工具开发的首选语言。本文将以笔者开发的CATIA锥体自动化建模工具为例,参考NX软件中高效锥体创建命令,深度解析基于PySide6 GUI框架与pycatia接口库的集成…...
天才简史——Paolo Fiorini与他的速度障碍法
一、背景 第一次“认识”Paolo Fiorini教授是看了DMP的体积避障论文《Dynamic Movement Primitives: Volumetric Obstacle Avoidance》,而且他的学生Michele Ginesi将相关代码开源了,后来查阅了Paolo Fiorini相关资料才发现他竟然是速度障碍法的作者&am…...
第五天的尝试
目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 毅力是永久的享受。 没有人是一座孤岛,每个人都是这块大陆的一部分。 二、练习题 import numpy as np import matplotlib.pyplot as plt array np.array([1,2,3,4,5]) plt.plot…...
大小端模式和消息的加密解密
大小端模式 知识点一 什么是大小端模式 // 大端模式 // 是指数据的高字节保存在内存的低地址中 // 而数据的低字节保存在内存的高地址中 // 这样的存储模式有点儿类似于把数据当作字符串顺序处理 // 地址由小向大增加,数据从高位往低位放 …...
(1) 查看端口状态
1. lsof 和 netstat 命令的区别 1.1 lsof 概念:只有在 root 的命令下才能执行,否则无内容显示;root 命令下显示完全 lsof -i: 8080 1.2 netstat 普通用户下显示不完全,root 命令下显示完全 netstat -tunlp | grep 8080 1.3…...
【C++]string模拟实现
#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<assert.h> using namespace std; namespace liu {class string{public:using iterator char*;using const_iterator const char*;//string();//无参构造 string(const string&…...
Linux动静态库制作与原理
什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统…...
ArkUI Tab组件开发深度解析与应用指南
ArkUI Tab组件开发深度解析与应用指南 一、组件架构与核心能力 ArkUI的Tabs组件采用分层设计结构,由TabBar(导航栏)和TabContent(内容区)构成,支持底部、顶部、侧边三种导航布局模式。组件具备以下核心特…...
winrar 工具测试 下载 与安装
https://zhuanlan.zhihu.com/p/680852417 https://www.angusj.com/resourcehacker/#download 点击String Table,在展开列表中找到80:2052展开,删除1277行。点击右上方编译按钮,并保存。...
代码随想录算法训练营第四十四天
卡码网题目: 99. 岛屿数量100. 岛屿的最大面积 其他: 今日总结 往期打卡 99. 岛屿数量 跳转: 99. 岛屿数量 学习: 代码随想录公开讲解 问题: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水…...
每日Prompt:自拍生成摇头娃娃
提示词 将这张照片变成一个摇头娃娃:头部稍微放大,保持面部准确,身体卡通化。[把它放在书架上]。...
制作我的计算器
1. 界面布局 新建项目 MyCalculator,开始布局。 2. 静态布局 代码如下: // etc/pages/Index.ets Entry Component struct Index {build() {Column() {/*** 运算区*/Column() {TextInput({ text: 12x13 }).height(100%).fontSize(32).enabled(false).f…...
如何查看 Ubuntu开机是否需要密码
要查看 Ubuntu 开机是否需要密码,可以通过以下方法进行判断: 1. 检查自动登录设置 图形界面操作: 进入系统设置(Settings)→ 用户账户(User Accounts)→ 解锁设置(输入当前用户密码…...
今日行情明日机会——20250519
上证指数缩量收十字星,个股涨多跌少,这周反弹的概率比较大。 深证指数缩量调整,临近反弹,个股表现更好。 2025年5月19日涨停股主要行业方向分析 并购重组(政策驱动资产整合) • 涨停家数:16…...
【CodeBuddy 】从0到1,让网页导航栏变为摸鱼神器
【CodeBuddy 】从0到1,让网页导航栏变为摸鱼神器 我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 🌟嗨,我是LucianaiB&#…...
PCL点云库点云数据处理入门系列教材目录(2025年5月更新....)
PCL点云库点云数据处理入门系列教材目录 基础阶段 第 1 讲:PCL库简介和安装(Win10/11VS2019PCL 1.12.0)第 2 讲:PCL库中点云基本知识和数据类型结构第 3 讲:PCL库中点云数据格式PCD和PLY及其输入输出(IO&…...
同一颗太阳:Australia、Austria、Arab、Africa、Augustus、August、Aurora、Athena
我们来看一下下面这一堆单词: Australia n.澳大利亚;澳洲 Australian n.澳大利亚人 a.澳大利亚的 Austria n.奥地利 Austrian n.奥地利人 a.奥地利(人)的 Africa n.非洲 African n.非洲人* Arab a.阿拉伯的;阿拉伯人的 n.阿拉伯人(pl.Arabs)…...
用户账号及权限管理:企业安全的基石与艺术
在当今数字化时代,用户账号及权限管理已成为企业IT安全体系中不可或缺的核心组件。它不仅是保护敏感数据的第一道防线,更是确保业务运营效率和合规性的关键。本文将深入探讨用户账号及权限管理的重要性、最佳实践以及实施策略,助您构建一个安全、高效且灵活的访问控制体系。…...
存储系统03——数据缓冲evBuffer
存储系统03——数据缓冲evBuffer 数据缓冲evBuffer分段存储零拷贝线程安全 evbuffer 实例——存储系统事件触发 数据缓冲evBuffer evbuffer 是 Libevent 提供的一个高效内存缓冲区管理工具,用于存储和操作数据。它类似于一个动态增长的字节缓冲区,支持多…...
留给王小川的时间不多了
王小川,这位头顶“天才少年”光环的清华学霸、搜狗输入法创始人、中国互联网初代技术偶像,正迎来人生中最难啃的硬骨头。 他在2023年创立的百川智能,被称为“大模型六小虎”之一。今年4月,王小川在全员信中罕见地反思过去两年工作…...
Python海龟绘图-斗地主
#导入库 import random as r import turtle as t #数据 pk[红心A,红心2,红心3,红心4,红心5,红心6,红心7,红心8, 红心9,红心10,红心J,红心Q,红心K,黑桃A,黑桃2,黑桃3,黑桃4,黑桃5,黑桃6,黑桃7,黑桃8, 黑桃9,黑桃10,黑桃J, 黑桃Q,黑桃K,方块A,方块2,方块3,方块4,方块5,方块6,方块…...
一、内存调优
一、内存调优 什么是内存泄漏 监控Java内存的常用工具 内存泄露的常见场景 内存泄露的解决方案 内存泄露与内存溢出的区别 内存泄露:在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收&…...
机器学习--特征工程具体案例
一、数据集介绍 sklearn库中的玩具数据集,葡萄酒数据集。在前两次发布的内容《机器学习基础中》有介绍。 1.1葡萄酒列标签名: wine.feature_names 结果: [alcohol, malic_acid, ash, alcalinity_of_ash, magnesium, total_phenols, flavanoi…...
Java-List集合类全面解析
Java-List集合类全面解析 前言一、List接口概述与核心特性1.1 List在集合框架中的位置1.2 List的核心特性1.3 常见实现类对比 二、ArrayList源码剖析与应用场景2.1 内部结构与初始化2.2 动态扩容机制2.3 性能特点与最佳实践 三、LinkedList 源码剖析与应用场景3.1 内部结构与节…...
在Cursor中启用WebStorm/IntelliJ风格快捷键
在Cursor中启用WebStorm/IntelliJ风格快捷键 方法一:使用预置快捷键方案 打开快捷键设置 Windows/Linux: Ctrl K → Ctrl SmacOS: ⌘ K → ⌘ S 搜索预设方案 在搜索框中输入keyboard shortcuts,选择Preferences: Open Keyboard Shortcuts (JSON) …...
32、跨平台咒语—— React Native初探
一、时空晶体架构(核心原理) 1. 量子组件桥接协议 // 原生组件映射 <View> → iOS UIView / Android ViewGroup <Text> → UILabel / TextView 魔法特性: • JavaScriptCore引擎:通过V8/Hermes引擎执行JS逻辑…...
无源探头衰减比与带宽特性的关联性研究
引言 在电子测量领域,无源探头作为示波器的重要附件,其性能参数直接影响测量结果的准确性。本文将从电路设计原理出发,深入分析衰减比与带宽这两个关键参数的相互关系,帮助工程师正确理解并选择适合的测量探头。 技术原理分析 …...