C#实战:从零构建你的第一个AI分类模型【ML.NET入门】

从零开始:用 C# 与 ML.NET 打造你的第一个 AI 模型 我们将通过一个简单的分类问题来展示如何使用 ML.NET:根据某些输入特征,预测一个数据点属于哪一类。 阅读详情

1. 为什么C#开发者现在必须拥抱AI?

如果你是一名C#开发者,可能觉得AI、机器学习这些词听起来很高深,是Python或者数据科学家的专属领域。我以前也是这么想的,总觉得要搞AI,就得去学Python,用TensorFlow或者PyTorch,光是环境配置就能劝退一大半人。但后来我发现,事情完全不是这样。微软早就为我们C#开发者铺好了路,那就是ML.NET。

ML.NET是一个开源的、跨平台的机器学习框架,它让你能直接在熟悉的.NET环境中构建、训练和部署机器学习模型。这意味着什么?意味着你不用离开Visual Studio,不用去折腾Python环境,直接用你写了无数遍的C#代码,就能把AI能力集成到你的桌面应用、Web API或者移动应用里。这简直是C#开发者的福音!

就拿我们今天的任务来说——房屋价格预测。这听起来像是一个典型的商业应用场景,比如房产估价网站或者中介的内部工具。传统做法可能需要复杂的公式和人工经验判断,但用机器学习,我们只需要给模型“看”一些历史数据(房子大小和对应的价格),它就能自己找出规律,然后预测新房子的大概价格。整个过程,从数据准备到模型训练,再到最后的预测调用,全部用C#搞定,一气呵成。

所以,别再觉得AI遥不可及了。接下来,我就带你从零开始,用ML.NET亲手搭建你的第一个AI分类(更准确地说,是回归)模型。我保证,只要你写过C#的Hello World,就能跟上这个教程。

2. 动手之前:环境与项目搭建

万事开头难,但咱们这个开头,简单得超乎想象。你不需要安装任何独立的机器学习软件,所有东西都通过NuGet包管理器搞定。

2.1 确保你的“装备”齐全

首先,你得有一个能跑.NET的开发环境。我强烈推荐使用 Visual Studio 2022 社区版,它是免费的,而且对.NET和ML.NET的支持最好。当然,如果你喜欢用命令行或者Rider,也完全没问题。

打开你的终端(PowerShell, CMD 或者 VS Code的终端都行),运行下面这个命令,检查一下你的.NET SDK版本:

dotnet --version

我写这篇文章的时候,最新的长期支持版是.NET 8.0,ML.NET对此有很好的支持。确保你的版本在6.0或以上。如果还没安装,去微软官网下载安装就行,过程跟装个普通软件没区别。

2.2 创建你的第一个ML.NET项目

好了,装备检查完毕,我们开始“造轮子”。我们不搞复杂的项目结构,就从最纯粹的控制台应用开始,这样能让你把全部注意力集中在机器学习流程本身。

在你想存放项目代码的目录下,执行以下命令:

dotnet new console -n HousePricePrediction
cd HousePricePrediction

第一行命令创建了一个名为HousePricePrediction的新控制台项目。第二行命令进入项目文件夹。接下来,就是引入我们今天的主角——ML.NET库:

dotnet add package Microsoft.ML

对,就这么简单。这个命令会从NuGet仓库拉取最新的、稳定的ML.NET包到你的项目中。现在,用你喜欢的编辑器(比如VS Code)或者直接用Visual Studio打开这个项目文件夹。你会看到一个熟悉的Program.cs文件,里面是经典的Hello World模板。别急,我们马上就要把它改造成一个AI预测引擎。

3. 理解你的数据:模型定义的艺术

机器学习,说白了就是“用数据训练模型”。所以,第一步不是写算法,而是理解你的数据,并用C#类把它清晰地定义出来。这一步非常关键,它决定了后续所有流程是否顺畅。

3.1 设计数据模型类

我们的任务是预测房价,假设目前我们只考虑一个最简单的因素:房屋面积(Size)。我们知道的历史数据是,某个面积的房子,卖出了某个价格(Price)。在机器学习术语里:

  • 特征(Feature): 是模型的输入,也就是我们用来做预测的依据。这里就是Size(房屋面积)。
  • 标签(Label): 是模型的输出,也就是我们想要预测的目标值。这里就是Price(房屋价格)。

我们需要两个类来分别代表训练数据和预测结果。在Program.cs文件的最上面,或者在新建的HouseData.cs文件中,定义如下类:

// 这个类代表一条历史交易数据,用于训练模型
public class HouseData
{
    // 特征:房屋面积(单位:百平方米,例如1.1代表110平米)
    public float Size { get; set; }

    // 标签:房屋价格(单位:百万元,例如1.2代表120万元)
    public float Price { get; set; }
}

// 这个类代表模型预测后返回的结果
public class HousePricePrediction
{
    // ColumnName特性告诉ML.NET,模型输出的“Score”列映射到这个属性上
    [Microsoft.ML.Data.ColumnName("Score")]
    public float PredictedPrice { get; set; }
}

我来解释几个你可能疑惑的点:

  1. 为什么用float? 机器学习中大量使用浮点数进行计算,float在精度和性能上是个很好的平衡。当然,用double也可以。
  2. HousePricePrediction类里的[ColumnName("Score")]是什么? 这是ML.NET的一个约定。对于回归任务,模型默认的输出列名就是Score。这个特性(Attribute)就像一座桥,把模型内部生成的叫Score的结果,赋值给我们自定义的PredictedPrice属性上,这样我们用起来就直观多了。
  3. 数据单位重要吗? 非常重要!在实际项目中,你需要确保数据是标准化或规范化过的。比如,面积是100多平米,价格是几百万,数值尺度相差巨大,这可能会让模型训练变得困难。我们这个例子为了极简,用了缩放后的数据(1.1代表110平)。真实场景下,你通常需要在训练管道里加上一个NormalizeMinMax转换器来处理这个问题。

3.2 准备训练数据

模型就像学生,训练数据就是它的教材。教材质量高,学生才能学得好。我们先准备一份极其简单的“教材”,让你立刻看到效果。在实际项目中,你的数据可能来自数据库、CSV文件或者API。

我们就在Main方法里,用内存中的数组来模拟这份数据:

// 模拟历史房屋销售数据
var houseData = new[]
{
    new HouseData { Size = 1.1F, Price = 1.2F },
    new HouseData { Size = 1.9F, Price = 2.3F },
    new HouseData { Size = 2.8F, Price = 3.0F },
    new HouseData { Size = 3.4F, Price = 3.7F }
};

这四行数据描绘了一个简单的趋势:面积越大,价格越高。虽然数据量小得可怜,但对于理解整个流程已经足够了。你可以试着在纸上画一下这四个点,它们几乎落在一条斜线上。我们的模型任务,就是找出这条最合适的线。

4. 构建与训练:让数据“炼”出模型

数据准备好了,接下来就是核心环节:构建训练管道并让模型开始学习。这个过程在ML.NET里被设计得非常流畅,像搭积木一样。

4.1 初始化与加载数据

一切始于一个MLContext对象。它是ML.NET所有操作的入口,类似于Entity Framework Core里的DbContext。

using Microsoft.ML;

// 在Main方法中
var mlContext = new MLContext(seed: 0); // seed参数确保实验可复现

接下来,我们把内存中的数据加载成ML.NET能够理解的IDataView格式。这是ML.NET中表示表格数据的基本抽象,非常高效。

// 将内存中的数据加载为IDataView
var trainingDataView = mlContext.Data.LoadFromEnumerable(houseData);

4.2 组装训练管道

管道(Pipeline)是ML.NET里一个强大的概念。它定义了一系列按顺序执行的数据转换和机器学习操作。你可以把它想象成一个生产流水线:原材料(原始数据)进去,经过清洗、加工、组装,最终产出成品(训练好的模型)。

我们的流水线很简单,只做两件事:

  1. 特征拼接: 告诉模型,哪个(或哪些)列是特征。虽然我们只有一个Size特征,但这一步仍然是必须的。ML.NET要求特征必须在一个名为Features的向量列中。
  2. 选择训练器: 告诉模型,使用什么算法来学习。对于预测一个连续数值(价格)的任务,我们使用回归算法。这里选择Sdca(随机双坐标下降法),它是一种在中小型数据集上表现很好且速度较快的线性回归算法。
// 定义数据处理和训练管道
var pipeline = mlContext.Transforms
    .Concatenate("Features", nameof(HouseData.Size)) // 将“Size”列复制到名为“Features”的新列中
    .Append(mlContext.Regression.Trainers.Sdca(
        labelColumnName: nameof(HouseData.Price), // 指定标签列是“Price”
        maximumNumberOfIterations: 100 // 最大迭代次数,100次对于小数据通常足够了
    ));

4.3 启动训练,生成模型

管道定义好了,原料(数据)也备齐了,开动机器!

// 在训练数据上拟合管道,生成模型
var trainedModel = pipeline.Fit(trainingDataView);

这一行Fit方法,就是模型“学习”的过程。它会根据我们提供的houseData,反复调整算法内部的参数,试图找到Size和Price之间最匹配的数学关系(对于线性回归,就是找一条最贴合所有数据点的直线)。训练完成后,trainedModel就是一个包含了所有学习成果的、可以用于预测的对象。

5. 使用模型:从代码到智能预测

模型训练好了,不能光摆着看,得用起来。我们需要一个方便的工具来调用它,这就是预测引擎。

5.1 创建预测引擎

预测引擎是针对特定输入/输出数据类型优化过的、线程安全的预测工具。对于Web应用这类需要高并发预测的场景,你应该创建单例的预测引擎池。对于我们这个控制台demo,直接创建就行。

// 创建预测引擎
var predictionEngine = mlContext.Model.CreatePredictionEngine<HouseData, HousePricePrediction>(trainedModel);

这个引擎现在“懂”了:你给我一个HouseData对象(包含Size),我就能返回一个HousePricePrediction对象(包含PredictedPrice)。

5.2 进行预测并解读结果

让我们来问问这个刚“毕业”的模型:如果一个房子面积是2.5(代表250平米),你觉得它值多少钱?

// 准备一条新的、没有价格的数据
var newHouse = new HouseData { Size = 2.5F };

// 进行预测!
var prediction = predictionEngine.Predict(newHouse);

// 输出结果
Console.WriteLine($"对于面积为 {newHouse.Size * 100} 平米的房屋,预测价格为:{prediction.PredictedPrice * 100:F2} 万元");

运行你的程序(在终端里输入dotnet run),你应该会看到一个预测价格输出。它大概率会落在之前1.9F(价格2.3)和2.8F(价格3.0)之间,比如2.6左右。这说明模型确实根据我们给的趋势做出了合理的推测。

5.3 理解模型的局限性

看到结果,你可能会兴奋,也可能会有疑问:“这就行了?拿四个数据点训练出来的模型能靠谱吗?” 问得好!这正是我想强调的:这个例子演示的是完整的流程,而不是一个生产级的模型。

它的局限性非常明显:

  1. 数据量太少: 四个样本,连“小样本”都算不上,模型根本无法学习到真实世界复杂的房价规律(比如地段、楼层、朝向、学区等)。
  2. 特征太单一: 房价怎么可能只由面积决定?这忽略了无数更重要的因素。
  3. 没有评估: 我们不知道这个模型的好坏。它可能只是完美地“记住”了这四个点(过拟合),而对新数据的预测一塌糊涂。

那么,一个更严肃的机器学习项目应该怎么做呢?你需要:

  • 收集更多、更丰富的真实数据。
  • 进行数据清洗和预处理,比如处理缺失值、异常值,对类别特征进行编码,对数值特征进行规范化。
  • 将数据分为训练集和测试集。只用训练集来训练模型,然后用模型从未见过的测试集来评估它的泛化能力。
  • 评估模型性能。对于回归问题,常用的指标有:均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)和决定系数(R²)。ML.NET提供了方便的方法来计算这些指标。
  • 尝试不同的算法和参数(这称为超参数调优),找到表现最好的那个。

6. 下一步:把你的模型用起来并变得更强

恭喜你,已经完成了从零到一的跨越!你现在已经知道了用C#和ML.NET做机器学习的标准流程:定义数据模型 -> 准备数据 -> 构建管道 -> 训练模型 -> 进行预测。但这仅仅是起点。

6.1 保存与加载模型

你不可能每次要用模型都重新训练一遍。训练可能花费几小时甚至几天,而预测应该在毫秒级完成。所以,你需要把训练好的模型保存成文件。

// 保存模型到文件
string modelPath = Path.Combine(Environment.CurrentDirectory, "Model", "HousePriceModel.zip");
mlContext.Model.Save(trainedModel, trainingDataView.Schema, modelPath);

这样,你就得到了一个HousePriceModel.zip文件。在另一个项目(比如一个Web API)中,你可以轻松加载它:

// 从文件加载模型
DataViewSchema modelSchema;
var loadedModel = mlContext.Model.Load(modelPath, out modelSchema);
// 然后使用加载的模型创建预测引擎...

6.2 迈向真实项目:从CSV文件读取数据

实际数据通常存在文件或数据库里。ML.NET读取CSV文件非常简单。假设你有一个houses.csv文件,内容如下:

Size,Price
1.1,1.2
1.9,2.3
2.8,3.0
3.4,3.7

你可以这样加载它:

// 定义数据类的结构,需要和CSV列名对应
public class HouseDataFromCsv
{
    [LoadColumn(0)] // 指定加载CSV的第0列
    public float Size { get; set; }

    [LoadColumn(1)] // 指定加载CSV的第1列
    public float Price { get; set; }
}

// 在Main方法中
var dataPath = "houses.csv";
var trainingDataView = mlContext.Data.LoadFromTextFile<HouseDataFromCsv>(
    path: dataPath,
    hasHeader: true, // 文件有标题行
    separatorChar: ',' // 分隔符是逗号
);

6.3 探索ML.NET的更多可能

房屋价格预测只是一个入门引子。ML.NET的能力远不止于此。你可以用它做:

  • 分类: 比如根据邮件内容判断是正常邮件还是垃圾邮件(二分类),或者根据鸢尾花的花萼花瓣尺寸判断其品种(多分类)。
  • 聚类: 比如根据客户购买行为对客户进行分群,用于市场细分。
  • 异常检测: 比如检测服务器CPU使用率的异常峰值。
  • 推荐: 搭建一个简单的电影推荐系统。
  • 图像分类: 使用预训练的TensorFlow或ONNX模型,或者用ML.NET的图像分类API训练自己的模型(比如识别猫狗)。

框架内置了丰富的转换器和训练器,覆盖了从数据预处理到模型训练评估的完整链路。更重要的是,它的API设计非常“C#”,直观且易于集成到现有的.NET生态中。

我刚开始用ML.NET时,总想着去找那些高大深的神经网络例子,后来发现,解决公司里80%的预测性问题,用这些经典的、可解释性强的线性模型或树模型(比如FastTree)就足够了,而且开发效率高,运维成本低。先跑通流程,解决一个实际的小问题,获得正反馈,然后再去探索更复杂的领域,这才是最踏实的学习路径。希望这个小小的房屋价格预测项目,能成为你打开C# AI世界大门的第一把钥匙。

C#语言的人工智能 C#(发音为"C sharp")是一种由微软开发的现代编程语言,旨在支持多种编程范式,包括面向对象、函数式和过程式编程。强类型与安全性:C#是一种强类型语言,支持静态类型检查,这减少了运行时错误的风险。跨平台支持:随着.NET Core和.NET 5/6的发布,C#的跨平台能力得到了增强,开发者可以在Windows、Linux和macOS上进行开发。丰富的库支持:C#拥有丰富的类库和API,使得开发者可以更方便地实现复杂的功能。 阅读详情

相关推荐

用 ML.NET 开发智能应用:让 .NET 程序员轻松掌握机器学习

ML.NET是一个由微软开发的开源跨平台机器学习框架,专为 .NET 开发者设计,允许他们在不离开 C# 或 F# 编程语言的情况下,进行机器学习建模和应用。通过 ML.NET,开发者无需学习 Python 或深度学习框架的复杂操作,就能在其现有的 .NET 应用中集成强大的机器学习功能。ML.NET 支持各种机器学习任务,包括分类、回归、聚类、推荐、异常检测、自然语言处理等。无论是开发企业级应用、Web 应用,还是桌面应用,ML.NET 都能为你的项目带来智能化提升。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3787

【赠书第19期】跨平台机器学习:ML.NET架构及应用编程

在微软最有价值专家(16届)的指导下,运用跨平台机器学习框架ML.NET来创建机器学习解决方案,将人工智能技术应用于实际任务场景中。

无人机开发(开源Ardupilot) 2万+

C#与AI开发:如何用.NET Core集成机器学习模型?

set;set;set;C#和.NET Core为机器学习模型的集成提供了强大的支持。通过ML.NET,你可以轻松地训练和评估机器学习模型,适用于常见的任务如分类、回归和聚类;而通过使用ONNX模型,你可以在.NET Core应用中轻松集成来自其他框架(如TensorFlow或PyTorch)的预训练模型。使用ML.NET开发和训练自己的机器学习模型,适合需要自定义训练的情况。使用ONNX模型与.NET Core集成,适合跨平台部署和使用其他框架(如TensorFlow、PyTorch)训练的现有模型。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1336

C#程序员如何入门AI

C#程序员入门AI,最大的优势不是工具,而是“编程思维”和“.NET生态”——咱们已经掌握了一门严谨、高效的编程语言,又有微软官方的工具链加持,只要找对方法、坚持实操,完全不用羡慕Python程序员。入门阶段,不用追求“一口吃成胖子”,先从ML.NET的简单demo入手,感受AI开发的乐趣;然后通过小项目积累经验,逐步理解AI的核心逻辑;最后再根据自己的兴趣和职业规划,往深度学习、系统部署等方向进阶。AI时代的到来,不是要淘汰程序员,而是要淘汰“不会AI的程序员”。

人工智能AI技术 1345

C#调用ML.NET(机器学习、人工智能预测)

我使用的VS2019版本,具体安装过程就不赘述了 这边我已经安装完了,就不演示了,安装过程可以自行。 后面我来展示下如何引用C#ML.NET 1创建项目 首先创建C#控制台项目 点击下一步就完成了,初始项目的创建 这个是建立完之后的初始项目 2数据准备 在使用ML.NET的时候需要准备好数据(数据可以从文件/数据库中获取) 我这边演示从文件中建立好,本次预测的销售额度 前期个人学习比较推荐使用EXCEL文件存入标本数据(需要转CSV文件)...

qq_21569035的博客 3453

C#结合.NET框架快速构建和部署AI应用

在人工智能(AI)的浪潮中,C#作为一种功能强大且类型安全的编程语言,为AI工程开发提供了坚实的基础。C#结合.NET框架,使得开发者能够快速构建和部署AI应用。本文将通过一个简单的实例,展示如何使用C#进行AI工程开发。

Peter的博客 1786

ML.NET与C#在Jupyter笔记本中的应用:机器学习实践教程

ML.NET 是一个跨平台的开源机器学习框架,由微软开发,旨在将机器学习的能力带给.NET开发者。开发者可以使用C#或F#等.NET支持的语言,轻松地将机器学习模型集成到应用程序中,无论是Web、移动还是桌面应用。ML.NET允许开发者从数据准备、模型训练、评估、优化到最终的模型部署,整个机器学习工作流全部在.NET环境中完成。随着人工智能和机器学习技术的快速发展,ML.NET框架的设计初衷是为了解决.NET开发者在构建智能应用程序时面临的挑战。

weixin_33750664的博客 1220

探索 C# 与机器学习框架的融合及应用场景

对于 C# 开发者来说,如何在现有的 .NET 环境中有效地结合机器学习框架,实现智能应用,成为一个重要的课题。ML.NET 支持各种机器学习任务,如数据分类、回归预测、聚类、异常检测、推荐系统、文本分析等,并且与 C# 的集成非常紧密,能够无缝地与现有的 .NET 应用程序一起工作。随着机器学习技术的崛起,C# 开发者也希望能够在 .NET 环境中进行机器学习开发,借助已有的编程语言和工具,构建出智能化的应用。为了展示 ML.NET 的应用,下面是一个简单的房价预测示例。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1542

C#在机器学习模型训练中的应用:别再让Python独领风骚了!从ML.NET到TorchSharp保姆级实战指南

ML.NET:微软官方出品,适合表格数据的分类、回归、聚类任务,AutoML功能让小白也能快速上手TorchSharp:PyTorch的C#绑定,适合深度学习任务(图像、文本、序列),代码风格与Python版几乎一致:跨框架推理引擎,适合部署Python训练的模型,支持CPU/GPU/NPU加速2026新趋势:ML.NET 5.0/6.0全面拥抱大模型,GenAI命名空间让C#开发者也能玩转LLM避坑要点。

墨夶的博客 1421

C# ML.NET多类分类:1个库,2个陷阱,3个必学技巧

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀。

java专栏 2749

C#智驭AI未来:一堂ML.NET实战课,解锁客户流失预测密码

Microsoft的ML.NET框架,为C#开发者铺平了道路,让他们能够轻松地在应用中融入机器学习的力量。本文将以一个预测分析的实战项目为例,展示如何利用C#和ML.NET从零开始构建一个简单的智能预测模型。通过以上步骤,我们成功地在C#中集成ML.NET,构建了一个预测客户流失的机器学习模型。随着ML.NET等工具的不断进步,C#开发者在机器学习的征途上将走得更远。首先,我们需要准备训练数据集,包含客户的属性(如年龄、账户余额等)以及他们是否流失的信息。注释:创建预测引擎,对单个客户数据进行流失预测。

java专栏 2264

使用ML.Net和C#进行机器学习

目录 介绍 背景 概述 监督 无监督 监督机器学习 二进制分类 情感分析维基百科 训练阶段 预测阶段 你有垃圾邮件 多类分类 语言检测 鸢尾花分类 版本1 版本2 结论 参考 Wikipedia_SentimentAnalysis.zip YouGotSpam_Analysis.zip LanguageDetection.zip ...

寒冰屋的专栏 8046

【C#与ML.NET的机器学习模型集成】——释放.NET开发者的无限潜能,轻松构建智能应用

ML.NET是一个由微软提供的免费、开源且跨平台的机器学习框架,专为.NET开发者量身打造。它允许用户使用C#或F#编写代码,在不需要离开熟悉的VisualStudio开发环境的前提下,创建、训练并部署自定义机器学习模型。无论是分类、回归还是聚类等常见任务,ML.NET都能提供强有力的支持,并且支持自动机器学习(AutoML),极大降低了入门门槛。通过上述步骤,我们已经成功地完成了一个完整的机器学习项目周期,从最初的问题定义到最后的应用部署。

墨夶的博客 1047

如何用ML.NET AutoML快速构建机器学习模型:machinelearning-samples完全指南

ML.NET是一个开源跨平台的机器学习框架,专为.NET开发者设计。本文将通过machinelearning-samples项目,详细介绍如何利用ML.NET AutoML功能自动构建、训练和部署高质量机器学习模型,即使你没有深厚的机器学习背景也能轻松上手。 ## 什么是ML.NET AutoML? ML.NET AutoML是ML.NET框架中的自动化机器学习工具,它能够自动处理数据预处理、

gitblog_00354的博客 776

C#与机器学习:ML.NET库应用的魔法实验室

机器学习是一种人工智能技术,它允许计算机通过学习数据来提高性能,而不需要明确编程。简单来说,机器学习就像是训练你的魔法宠物,让它能够识别模式和做出预测。ML.NET是一个开源的机器学习框架,专为.NET开发者设计。它允许开发者轻松地将机器学习集成到他们的应用程序中,支持多种机器学习任务,如分类、回归、聚类等。定义你的数据模型,包括输入和输出。0set;1set;2set;

java专栏 1622

从Excel到AI:C#构建百万级数据预测模型的实战秘籍

C#也能玩转大数据预测!别再让Python团队"抢饭碗"了。本文分享如何用C#的ML.NET和Apache Flink实现大数据预测,避免跨语言开发的痛苦。通过数据模型定义、分页加载、内存映射等技巧,C#团队可以高效处理千万级数据。从数据预处理到模型训练全流程,C#都能搞定,让开发更统一高效。

墨夶的博客 2051
上一篇: DETR目标检测实战:用Transformer替代Faster R-CNN的完整代码解析
下一篇: 从零开始:Eclipse+GCC+STM32开发环境配置全攻略
raspberrypi5
博客等级 码龄1天 0粉丝 1856原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值