深入解析 Stacking:集成学习的“超级英雄联盟
在机器学习的世界里,我们常常面临一个挑战:单一模型往往难以完美地解决复杂问题。就像漫威电影中的超级英雄们一样,每个模型都有自己的独特能力,但也有局限性。那么,如何让这些模型“联手”发挥更大的力量呢?今天,我们就来深入探讨一种强大的集成学习方法——Stacking(堆叠)。
1. Stacking 是什么?
Stacking 是一种集成学习方法,它通过组合多个不同类型的模型,来提高整体的预测性能。想象一下,你有一个团队,每个成员都有自己擅长的技能,Stacking 的目标就是让这些成员“协同作战”,发挥出比单独作战更强的力量。
具体来说,Stacking 包含两个主要部分:
- 基模型(Base Models):这些是团队中的“基础成员”,可以是任何类型的机器学习模型,比如决策树、支持向量机、神经网络、随机森林等。每个基模型都会对数据进行学习,并生成自己的预测结果。
- 元模型(Meta-Model):这是团队中的“指挥官”,它以基模型的预测结果为输入,学习如何将这些预测结果组合起来,生成最终的预测结果。
2. Stacking 的工作原理
2.1 数据划分:防止“作弊”
在 Stacking 中,数据划分至关重要。我们需要将数据分为三部分:
- 训练集(Training Set):用于训练基模型。
- 验证集(Validation Set):用于生成基模型的预测结果,这些预测结果将作为元模型的输入。
- 测试集(Test Set):用于评估最终模型的性能。
为什么要这样划分呢?这是因为如果不划分验证集,基模型的预测结果可能会包含训练数据的信息,从而导致数据泄露(data leakage)。这种“作弊”行为会让元模型的训练结果失真,最终影响模型的泛化能力。
2.2 训练基模型:各显神通
在训练集上,我们分别训练多个基模型。每个基模型都会根据自己的算法和参数,对数据进行学习,并生成对验证集和测试集的预测结果。这些预测结果就像是基模型们的“成绩单”,将被送到元模型那里进行“综合评估”。
2.3 训练元模型:指挥官的智慧
元模型的任务是学习如何将基模型的预测结果组合起来。它将基模型在验证集上的预测结果作为输入特征,通过自己的学习过程(比如线性回归、决策树等),找到最佳的组合方式,从而生成最终的预测结果。
2.4 生成最终预测:团队的力量
在测试集上,我们先使用基模型生成预测结果,然后将这些预测结果输入到元模型中。元模型会根据之前学到的组合方式,生成最终的预测结果。这个最终结果,就是整个团队的“合力”,往往比任何一个基模型单独预测的结果都要好。
3. Stacking 的优势
3.1 提高预测精度
通过组合多个不同类型的模型,Stacking 可以充分利用每个模型的优点,弥补单一模型的不足。比如,决策树模型可能在某些特征上表现很好,但容易过拟合;而线性模型可能在某些特征上表现较弱,但泛化能力较强。通过 Stacking,我们可以让这些模型“互补”,从而提高整体的预测精度。
3.2 减少过拟合风险
元模型的作用就像是一个“调节器”,它可以根据基模型的预测结果,找到最佳的组合方式。这种组合方式往往比单一模型的预测更加稳定,从而减少了过拟合的风险。
3.3 灵活性高
Stacking 的灵活性非常高,你可以根据具体问题选择不同的基模型和元模型。无论是简单的线性模型,还是复杂的神经网络,都可以作为基模型或元模型。这种灵活性使得 Stacking 能够适应各种不同的数据集和问题。
4. Stacking 的缺点
4.1 计算复杂度高
Stacking 的一个主要缺点是计算复杂度较高。我们需要训练多个基模型和一个元模型,这无疑增加了计算成本。尤其是在处理大规模数据集时,这种计算成本可能会变得难以承受。
4.2 数据泄露风险
如果数据划分不当,可能会导致数据泄露。比如,如果基模型的预测结果包含了训练数据的信息,那么元模型的训练结果就会失真。因此,在实现 Stacking 时,一定要严格划分数据,确保数据的独立性。
4.3 调参困难
由于 Stacking 涉及多个模型,因此调参过程相对复杂。我们需要分别调整基模型和元模型的参数,这需要大量的实验和调试。此外,不同模型之间的参数选择也可能相互影响,进一步增加了调参的难度。
5. Stacking 的实现示例
为了更好地理解 Stacking 的实现过程,我们来看一个具体的 Python 示例。在这个示例中,我们将使用 scikit-learn
库来实现 Stacking,解决一个回归问题。
5.1 安装必要的库
在开始之前,请确保你已经安装了以下库:
pip install numpy scikit-learn
5.2 示例代码
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 加载数据集
data = load_boston()
X, y = data.data, data.target# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)# 定义基模型
base_models = [('rf', RandomForestRegressor(n_estimators=100, random_state=42)),('gb', GradientBoostingRegressor(n_estimators=100, random_state=42))
]# 定义元模型
meta_model = LinearRegression()# 训练基模型
base_predictions_train = np.zeros((X_train.shape[0], len(base_models)))
base_predictions_val = np.zeros((X_val.shape[0], len(base_models)))for i, (name, model) in enumerate(base_models):model.fit(X_train, y_train)base_predictions_train[:, i] = model.predict(X_train)base_predictions_val[:, i] = model.predict(X_val)# 训练元模型
meta_model.fit(base_predictions_val, y_val)# 在测试集上生成基模型的预测结果
base_predictions_test = np.zeros((X_test.shape[0], len(base_models)))
for i, (name, model) in enumerate(base_models):base_predictions_test[:, i] = model.predict(X_test)# 使用元模型生成最终预测结果
final_predictions = meta_model.predict(base_predictions_test)# 评估模型性能
mse = mean_squared_error(y_test, final_predictions)
print(f"Mean Squared Error: {mse}")
5.3 示例解析
在这个示例中,我们使用了两个基模型:随机森林(Random Forest)和梯度提升树(Gradient Boosting)。这两个模型都是强大的回归模型,但它们的预测结果可能会有所不同。我们将这两个模型的预测结果作为输入,训练了一个线性回归模型作为元模型。
通过这种方式,元模型学习了如何将基模型的预测结果组合起来,生成最终的预测结果。最终,我们使用测试集评估了模型的性能,并计算了均方误差(MSE)。
6. Stacking 的变体
除了基本的 Stacking 方法外,还有一些变体可以进一步优化模型的性能。比如:
- Blending:与 Stacking 类似,但只使用验证集的预测结果来训练元模型,而不是使用所有训练数据。这种方法可以减少数据泄露的风险。
- Bagging:通过随机抽样生成多个训练集,训练多个模型,然后对模型的预测结果进行平均或投票。这种方法可以减少模型的方差,提高泛化能力。
- Boosting:通过逐步训练模型,每个新模型专注于纠正前一个模型的错误。这种方法可以逐步提高模型的性能,但可能会增加过拟合的风险。
7. 总结
Stacking 是一种强大的集成学习方法,它通过组合多个基模型和一个元模型,可以有效提高预测精度和泛化能力。虽然它的实现相对复杂,但在处理复杂数据集时表现出色。通过合理选择基模型和元模型,以及严格划分数据,我们可以充分发挥 Stacking 的优势,让机器学习模型的性能更上一层楼。
希望这篇文章能帮助你更好地理解 Stacking 方法。如果你有任何问题或建议,欢迎随时留言讨论!
相关文章:
深入解析 Stacking:集成学习的“超级英雄联盟
在机器学习的世界里,我们常常面临一个挑战:单一模型往往难以完美地解决复杂问题。就像漫威电影中的超级英雄们一样,每个模型都有自己的独特能力,但也有局限性。那么,如何让这些模型“联手”发挥更大的力量呢࿱…...
C# 编程核心:控制流与方法调用详解
在编程中,控制流和方法调用是构建程序逻辑的两大基石。它们决定了代码的执行顺序和模块化协作方式。本文将从基础概念出发,结合代码示例,深入解析这两部分内容。 控制流:程序执行的指挥棒 控制流决定了代码的执行路径࿰…...
PyTorch_张量基本运算
基本运算中,包括add, sub, mul, div, neg等函数,以及这些函数的带下划线的版本add_, sub_, mul_, div_, neg_, 其中带下划线的版本为修改原数据。 代码 import torch import numpy as np # 不修改原数据的计算 def test01():data torch.randint(0, 10…...
C++负载均衡远程调用学习之订阅功能与发布功能
目录 1.lars-DnsV0.1回顾 2.Lars-DnsV0.2-订阅功能的订阅模块分析 3.Lars-DnsV0.2-订阅模块的类的单例创建及方法属性初始化 4.Lars-DnsV0.2-发布功能的实现 5.Lars-DnsV0.2-发布功能的总结 6.Lars-DnsV0.2-订阅流程复习 7.Lars-DnsV0.2-订阅模块的集成 8.Lars-DnsV0.2订…...
接口测试的核心思维(基础篇)
1.为什么会进行接口测试? 早期发现问题,降低修复成本 当我们服务端已经完成,而前端还未进行开发的时候。我们可以通过接口测试避免前端的交互直接进行服务端的测试。 接口测试也能够更早介入项目的测试,降低修复成本。 提高测试…...
给文件内容加行号
题目: 给定一个文件,通过文件读写,给文件内容加行号。 行号形式如: 1:) xxXXXX 2:) xxxxXX 要求: 使用缓冲流操作。 思路分析: 程序定义了两个字符串变量 inputFile 和 outputFile,分别存储输入文件的路径…...
【计算机视觉】三维重建: MVSNet:基于深度学习的多视图立体视觉重建框架
MVSNet:基于深度学习的多视图立体视觉重建框架 技术架构与核心算法1. 算法流程2. 关键创新 环境配置与实战指南硬件要求安装步骤数据准备(DTU数据集) 实战流程1. 模型训练2. 深度图推断3. 点云生成 常见问题与解决方案1. CUDA内存不足2. 特征…...
终端与环境变量
一、我的电脑是Win10的,首先打开终端如下: 此时终端来到C:\Users\lenovo的目录下,可以访问该目录下的所有文件(夹)。另外,除了这个之外,终端还可以访问环境变量中的所有文件(夹&…...
使用线性表实现通讯录管理
目录 🚀前言🦜任务目标🌟顺序表实现🐍链表实现 🚀前言 大家好!我是 EnigmaCoder。 本文介绍线性表的实验,使用顺序表和链表实现通讯录管理,包含初始化、插入、删除、查询、输出。 &a…...
机器学习常用评价指标
1. 指标说明 (1) AccuracyClassification(准确率) • 计算方式:accuracy_score(y_true, y_pred) • 作用: 衡量模型正确预测的样本比例(包括所有类别)。 公式: Accuracy TP TN TP TN FP…...
基于ArduinoIDE的任意型号单片机 + GPS北斗BDS卫星定位
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.1 器件选择1.2 接线方案 二、驱动实现2.1 核心代码解析(arduino/ESP32-S3) 三、坐标解析代码四、典型问题排查总结 前言 北斗卫星导航…...
CGAL:创建点、线、三角形及其距离、关系
CGAL(Computational Geometry Algorithms Library,计算几何算法库)是一个强大的开源库,为众多几何计算问题提供了高效的解决方案,在计算几何领域应用广泛。以下将基于提供的代码示例,详细介绍如何利用 CGAL…...
STM32基础教程——软件I2C
目录 前言 I2C MPU6050 技术实现 原理图 连线图 代码实现 技术要点 I2C初始化 SCL输出和SDA输入输出控制 起始信号 停止信号 发送一个字节 读取一个字节 发送应答位 接收应答位 MPU6050初始化 指定地址写 指定地址读 读取数据寄存器 问题记录 前言 I2C …...
Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析
注:本文为 “Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析” 相关文章合辑。 略作重排,未整理去重。 如有内容异常,请看原文。 Xilinx FPGA 管脚 XDC 约束之:物理约束 FPGA技术实战 于 2020-02-04 17:14:53 发布 说明&#x…...
应用层自定义协议序列与反序列化
目录 一、网络版计算器 二、网络版本计算器实现 2.1源代码 2.2测试结果 一、网络版计算器 应用层定义的协议: 应用层进行网络通信能否使用如下的协议进行通信呢? 在操作系统内核中是以这种协议进行通信的,但是在应用层禁止以这种协议进行…...
大数据:数字时代的驱动力
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 随着互联网和技术的迅猛发展,数据已经成为现代社会最宝贵的资源之一。大数据(Big Data)作为一种全新的信息资源,正以前所未有的方式改变着各个行业的运作模式,推动着社会的进步与创新。无论是金…...
java学习之数据结构:二、链表
本节介绍链表 目录 1.什么是链表 1.1链表定义 1.2链表分类 2.链表实现 2.1创建链表 1)手动创建 2)创建链表类进行管理链表的相关操作 2.2添加元素 1)头插法 2)尾插法 3)任意位置插入 2.3删除 2.4查找 1&…...
评估动态化烹饪工艺与营养实训室建设要点
在全民健康意识显著提升、健康饮食理念深度普及的时代背景下,烹饪工艺与营养实训室建设要点已不再局限于传统单一的技能训练模式。需以行业需求为导向,通过功能集成化设计推动革新 —— 将食品安全防控、营养科学分析、智能烹饪技术、餐饮运营管理等多元…...
Java学习手册:关系型数据库基础
一、关系型数据库概述 关系型数据库是一种基于关系模型的数据库,它将数据组织成一个或多个表(或称为关系),每个表由行和列组成。每一列都有一个唯一的名字,称为属性,表中的每一行是一个元组,代…...
吾爱出品 [Windows] EndNote 21.5.18513 汉化补丁
[Windows] EndNote 链接:https://pan.xunlei.com/s/VOPLLs6DqKNz-EoBSWVRTSmGA1?pwd9isc# Thomson Scientific公司推出了2025,本次的endnote21大概率是最后一个版本啦,现已决定进行更新。 本次采用的环境为python3.12,win11&am…...
Sentinel学习
sentinel是阿里巴巴研发的一款微服务组件,主要为用户提供服务保护,包括限流熔断等措施 (一)主要功能 流量控制(限流):比如限制1s内有多少请求能到达服务器,防止大量请求打崩服务器…...
【中间件】brpc_基础_execution_queue
execution_queue 源码 1 简介 execution_queue.h 是 Apache BRPC 中实现 高性能异步任务执行队列 的核心组件,主要用于在用户态线程(bthread)中实现任务的 异步提交、有序执行和高效调度。 该模块通过解耦任务提交与执行过程,提…...
Servlet(二)
软件架构 1. C/S 客户端/服务器端 2. B/S 浏览器/服务器端: 客户端零维护,开发快 资源分类 1. 静态资源 所有用户看到相同的部分,如:html,css,js 2. 动态资源 用户访问相同资源后得到的结果可能不一致,如:s…...
如何提升个人的思维能力?
提升个人的逻辑思维能力是一个系统性工程,需要长期训练和科学方法。以下是分阶段、可操作的详细建议,涵盖理论基础、日常训练和实战应用: 一、构建逻辑基础认知 1. 学习逻辑学核心理论 入门读物:《简单的逻辑学》麦克伦尼&am…...
[UVM]UVM中reg_map的作用及多个rem_map的使用案例
UVM中reg_map的作用及多个rem_map的使用案例 摘要:在 UVM (Universal Verification Methodology) 中,寄存器模型是用于验证 DUT (Design Under Test) 寄存器行为的重要工具。UVM 寄存器模型中的 uvm_reg_map(简称 reg_map)是寄存器模型的核心组成部分之一,用于定义…...
重新构想E-E-A-T:提升销售与搜索可见性的SEO策略
在2025年的数字营销环境中,谷歌的E-E-A-T(经验、专业性、权威性、可信度)已成为SEO和内容营销的核心支柱。传统的E-E-A-T优化方法通常聚焦于展示作者资质或获取反向链接,但这些策略可能不足以应对AI驱动的搜索和日益挑剔的用户需求…...
AI 采用金字塔(Sohn‘s AI Adoption Pyramid)
这张图是 Sohn 的 AI 采用金字塔(Sohn’s AI Adoption Pyramid) ,用于描述不同程度的 AI 应用层次,各层次意义如下: 金字塔层级 Level 1:业务角色由人类主导,AI 起辅助作用,如 AI …...
影刀RPA中新增自己的自定义指令
入门到实战明细 1. 影刀RPA自定义指令概述 1.1 定义与作用 影刀RPA的自定义指令是一种强大的功能,旨在提高流程复用率,让用户能够个性化定制指令,实现流程在不同应用之间的相互调用。通过自定义指令,用户可以将常用的、具有独立…...
驱动总裁v2.19(含离线版)驱动工具软件下载及安装教程
1.软件名称:驱动总裁 2.软件版本:2.19 3.软件大小:602 MB 4.安装环境:win7/win10/win11 5.下载地址: https://www.kdocs.cn/l/cdZMwizD2ZL1?RL1MvMTM%3D 提示:先转存后下载,防止资源丢失&am…...
SQL经典实例
第1章 检索记录 1.1 检索所有行和列 知识点:使用SELECT *快速检索表中所有列;显式列出列名(如SELECT col1, col2)提高可读性和可控性,尤其在编程场景中更清晰。 1.2 筛选行 知识点:通过WHERE子句过滤符合条…...
2025深圳杯(东三省)数学建模竞赛D题完整分析论文(共36页)(含模型、可运行代码、数据结果)
2025深圳杯数学建模竞赛D题完整分析论文 目录 摘 要 一、问题重述 二、问题分析 三、模型假设 四、符号定义 五、问题一模型的建立与求解 5.1 问题一模型的建立 5.1.1 问题建模背景 5.1.2 特征工程设计 5.1.3 分类模型结构与数学表达 5.2 问题一模型的求…...
大数据技术:从趋势到变革的全景探索
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 在数字化时代的浪潮下,大数据已经不再是一个陌生的概念。从日常生活中的社交媒体,到企业决策支持系统,再到公共管理的大数据应用,它正在改变着我们的工作和生活方式。随着技术的进步,传统的数据…...
C++【内存管理】
C语言中的动态内存管理 int main() { int* p2(int*)calloc(4,sizeof(int)); int* p3(int*)realloc(p2,sizeof(int)*10); free(p3); }这里因为扩容数据小,所以是原地扩容,p2p3地址一样,不用free(p2) 如果扩容空间大就不是原地扩容,而是新找一块空间,然后拷贝 C内存管理方式 n…...
【Go类库分享】mcp-go Go搭建MCP服务
【Go类库分享】mcp-go Go搭建MCP服务 介绍 目前Go 生态圈有两个知名的开发 MCP 的库,一个是mark3labs/mcp-go,另一个是metoro-io/mcp-golang。 在介绍常用库之前,先来简单介绍一下mcp协议: MCP全称Model Context Protocol 模型上下文协议&a…...
人工智能发展史 — 物理学诺奖之 Hopfield 联想和记忆神经网络模型
目录 文章目录 目录1982 年,Hopfield 联想和记忆神经网络模型背景知识历史:霍普菲尔德简介神经学:大脑的联想记忆机制物理学:磁性材料的自旋玻璃理论和能量最小值函数 Hopfield 神经网络基本原理记忆存储(训练…...
Docker —— 技术架构的演进
Docker —— 技术架构的演进 技术架构演进总结单机架构优点缺点总结 应用数据分离架构优点缺点总结 应用服务集群架构1. Nginx2. HAProxy3. LVS(Linux Virtual Server)4. F5 BIG-IP对比总结选型建议 读写分离/主从分离架构1. MyCat简介 2. TDDLÿ…...
Docker与WSL2如何清理
文章目录 Docker与WSL2如何清理一、docker占据磁盘空间核心原因分析1. WSL2 虚拟磁盘的动态扩展特性2. Docker 镜像分层缓存与未清理资源 二、解决方案步骤 1:清理 Docker 未使用的资源步骤 2:手动压缩 WSL2 虚拟磁盘1. 关闭 WSL2 和 Docker Desktop2. 定…...
单片机嵌入式按键库
kw_btn库说明 本库主要满足嵌入式按键需求,集成了常用的按键响应事件:高电平、低电平、上升沿、下降沿、单击、双击、长按键事件。可以裸机运行,也可以配合实时操作系统运行。 本库开源连接地址:gitee连接 实现思路 本库采用C语…...
多多铃声 7.4| 拥有丰富的铃声曲库,满足不同用户的个性化需求,支持一键设置手机铃声
多多铃声是一款提供丰富铃声资源的应用程序,它拥有广泛的铃声曲库,涵盖各种风格和类型,能够满足不同用户的个性化需求。该应用程序支持分类浏览和热门榜单功能,让用户可以轻松找到当前最流行或自己感兴趣的铃声。此次分享的版本为…...
基于stm32的四旋翼飞行器:MPU6050讲解 · 上(参数读取)
大伙早上好,不知道大伙有没有飞行器情结,就是学习嵌入式就想做一个能飞的东西。小白兔不才,小白兔有啊,所以最近准备做一个简单的飞行器出来,如果失败了,那么这个系列就只能烂尾了,如果成功了&a…...
使用xlwings将excel表中将无规律的文本型数字批量转化成真正的数字
之前我写了一篇文章excel表中将无规律的文本型数字批量转化成真正的数字-CSDN博客 是使用excel自带的操作,相对繁琐。 今天使用xlwings操作,表格如下(有真正的数字,也有文本型数字,混在在一起)࿱…...
linux netlink实现用户态和内核态数据交互
1,内核态代码 #include <linux/module.h> #include <linux/netlink.h> #include <net/sock.h> #define NETLINK_TEST 31 struct sock *nl_sk NULL; static void nl_recv_msg(struct sk_buff *skb) { struct nlmsghdr *nlh; int pid; …...
学习黑客安全基础理论入门
准备安全课程内容 你已安装Kali和相关工具,并希望从基础开始学习安全。为了使课程更加互动,我会提供有趣的文本,并结合可视化内容,可能还会提供一些参考链接。内容方面,我会根据最新的中国网络安全法律作出更新&#…...
探索内容智能化的关键解决方案
北京先智先行科技有限公司拥有三款旗舰产品,分别是“先知大模型”、“先行AI商学院”以及“先知AIGC超级工场”。这三款产品在企业发展过程中扮演着重要角色。 北京先智先行科技有限公司围绕先知大模型等核心要素,构建了完备的业务体系。先知大模型私…...
学习黑客色即是空
二、Day 3 学习目标(保真版) 一句话目标: 学会用 Asset-Threat-Vulnerability-Risk (ATVR) 四件套给任何系统快速画“风险画像”,并能把它映射到黑客常说的 5 阶段攻击生命周期。 1. 30 分钟理论——ATVR 四件套 概念核心定义参考…...
【Java学习】关于springBoot的自动配置和起步依赖
关于springBoot的起步依赖:解决了spring框架中开发者配置依赖难的问题,各种依赖及版本的不同,可能引发不同的问题,使得开发者的精力大部分可能耗费在非业务代码中。所以springBoot起步依赖解决了各种依赖难的配置问题。 起步依赖…...
【LLaMA-Factory实战】1.3命令行深度操作:YAML配置与多GPU训练全解析
一、引言 在大模型微调场景中,命令行操作是实现自动化、规模化训练的核心手段。LLaMA-Factory通过YAML配置文件和多GPU分布式训练技术,支持开发者高效管理复杂训练参数,突破单机算力限制。本文将结合结构图、实战代码和生产级部署经验&#…...
【Mytais系列】介绍、核心概念
MyBatis 是一款优秀的 持久层框架,它通过简化 JDBC 操作、提供灵活的 SQL 映射能力,成为 Java 开发中处理数据库交互的核心工具之一。以下是 MyBatis 的核心框架和概念解析: 一、MyBatis 框架概述 1. 核心定位 作用:将 Java 对象…...
Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录
注:本文为 “Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录” 相关文章合辑。 略作重排,未整理去重。 如有内容异常,请看原文。 Vivado 开发流程(手把手教学实例)(FPGA) 不完美先生 于 2018-04-…...
PowerShell从5.1升级到7.X
文章目录 环境背景安装PowerShell 7.X其它启动PowerShell 5.1和7.X$PSVersionTable.PSVersion启动PowerShell 5.1时强制启动7.X 参考 环境 Windows 11 专业版 背景 PowerShell 5.1是Windows内置的,发布时间是2016 年。现在PowerShell版本已经到了7.5.1࿰…...