视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战

视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战

目录

### 文章目录

  • [视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [目录](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [@[toc]](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [1. 引言:从 CNN 到 Transformer 的跨界](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [1.1 常见误区与调试技巧](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [2. ViT 核心原理:图像如何变成序列?](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [2.1 核心步骤:](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [2.2 拓展概念:归纳偏置 (Inductive Bias)](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [3. 核心组件代码实现:Patch Embedding](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [3.1 正面示例:高效实现补丁嵌入](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [3.2 错误实例:位置编码忘记相加](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [4. 项目实战:基于 ViT 的图像分类](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [4.1 代码流程](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [4.2 训练要点](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [5. 高级使用技巧:性能优化与微调](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [5.1 图像尺寸的灵活性](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [5.2 掉点检查:梯度裁剪](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [6. 实际工作中的应用建议](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [6.1 工业部署的考量](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [6.2 实际项目避坑指南](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)
  • [7. 总结与展望](#文章目录 视觉领域的变革者:ViT (Vision Transformer) 深度解析与实战 目录 @[toc] 1. 引言:从 CNN 到 Transformer 的跨界 1.1 常见误区与调试技巧 2. ViT 核心原理:图像如何变成序列? 2.1 核心步骤: 2.2 拓展概念:归纳偏置 (Inductive Bias) 3. 核心组件代码实现:Patch Embedding 3.1 正面示例:高效实现补丁嵌入 3.2 错误实例:位置编码忘记相加 4. 项目实战:基于 ViT 的图像分类 4.1 代码流程 4.2 训练要点 5. 高级使用技巧:性能优化与微调 5.1 图像尺寸的灵活性 5.2 掉点检查:梯度裁剪 6. 实际工作中的应用建议 6.1 工业部署的考量 6.2 实际项目避坑指南 7. 总结与展望)

1. 引言:从 CNN 到 Transformer 的跨界

在 2020 年之前,卷积神经网络 (CNN) 统治着计算机视觉领域。然而,Google 提出的 ViT (Vision Transformer) 彻底打破了这一格局。它证明了:不需要卷积(Convolution),纯 Transformer 架构也能在视觉任务上取得 SOTA 效果。

1.1 常见误区与调试技巧

  • 错误实例 :直接将小数据集(如只有几百张图)喂给原生的 ViT。
    • 现象:模型完全不收敛,准确率极低。
    • 纠正 :ViT 缺乏 CNN 那样的归纳偏置(Inductive Bias)(如平移不变性和局部性)。它需要海量数据(如 ImageNet-21k)预训练才能展现威力。
  • 调试技巧 :在训练初期,观察 Attention Map。如果注意力完全随机,没有聚焦在物体边缘或核心区域,通常说明学习率设置过大或没有加载预训练权重。

2. ViT 核心原理:图像如何变成序列?

Transformer 本是为 NLP 设计的,处理的是 1D 词向量序列。ViT 的精髓在于如何将 2D 图像"伪装"成 1D 序列。

2.1 核心步骤:

  1. Patch Partition(切片) :将图像划分为固定大小的补丁(如 16 × 16 16 \times 16 16×16)。
  2. Linear Projection(线性映射):将补丁展平并映射为高维向量(Embedding)。
  3. Position Embedding(位置编码):为每个向量加上位置信息,否则 Transformer 无法分辨补丁的顺序。
  4. CLS Token:模仿 BERT,在序列开头加入一个可学习的"类别标记",用于最终分类。

2.2 拓展概念:归纳偏置 (Inductive Bias)

  • CNN:天生认为相邻像素更有联系(局部性)。这是一种"先验知识",让 CNN 在小数据上表现好。
  • ViT:不带任何成见,通过全局注意力(Global Self-Attention)去学习关系。虽然起步慢,但数据量越大,上限越高。

3. 核心组件代码实现:Patch Embedding

3.1 正面示例:高效实现补丁嵌入

利用 PyTorch 的 Conv2d 可以巧妙实现补丁切分与映射。

python 复制代码
import torch
import torch.nn as nn

class PatchEmbedding(nn.Module):
    def __init__(self, img_size=224, patch_size=16, in_chans=3, embed_dim=768):
        super().__init__()
        # 使用卷积实现切片:kernel_size=stride=patch_size
        self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=patch_size, stride=patch_size)

    def forward(self, x):
        # x: [B, 3, 224, 224]
        x = self.proj(x) # [B, 768, 14, 14]
        x = x.flatten(2) # [B, 768, 196]
        x = x.transpose(1, 2) # [B, 196, 768]
        return x

3.2 错误实例:位置编码忘记相加

  • 错误代码:直接将 Position Embedding 作为输入传给 Transformer 编码器。
  • 结果:丢失了图像特征,模型只能学到补丁的位置顺序,无法识别内容。
  • 调试技巧 :始终确保 x = patch_embeddings + pos_embeddings,且两者维度完全一致。

4. 项目实战:基于 ViT 的图像分类

我们将使用 timm 库(PyTorch 图像模型库)快速构建一个 ViT 并在自定义数据集上微调。

4.1 代码流程

python 复制代码
import timm
import torch

# 1. 加载预训练的 ViT-Base 模型
model = timm.create_model('vit_base_patch16_224', pretrained=True, num_classes=10)

# 2. 调试技巧:查看 Patch 数量
# 对于 224x224 图像,16x16 的 patch 大小会产生 (224/16)^2 = 196 个 patches
# 加上 1 个 CLS token,序列长度为 197

# 3. 模拟输入
img = torch.randn(1, 3, 224, 224)
output = model(img) # [1, 10]
print(f"输出形状: {output.shape}")

4.2 训练要点

  • 优化器选择 :ViT 对超参数极度敏感。AdamW 通常比带动量的 SGD 效果更好,因为它能更有效地处理 Transformer 中的权重衰减。
  • 学习率策略 :必须使用 Learning Rate Warmup。在训练前几个 Epoch 使用极小的学习率,防止 Transformer 梯度崩塌。

5. 高级使用技巧:性能优化与微调

5.1 图像尺寸的灵活性

ViT 的一个痛点是位置编码的长度是固定的。如果你训练时用 224x224,测试用 384x384 怎么办?

  • 高级技巧 :使用 2D 插值 (Bilinear Interpolation) 调整预训练的位置编码。timm 库内部已自动处理,但手动实现时需注意不要插值 CLS token 的部分。

5.2 掉点检查:梯度裁剪

Transformer 结构容易出现梯度爆炸。

python 复制代码
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
  • 应用建议 :在实际工作中,如果发现 Loss 突然变为 NaN,加入梯度裁剪通常能立竿见影。

6. 实际工作中的应用建议

6.1 工业部署的考量

虽然 ViT 理论性能强,但在移动端部署(如手机 NPU)上,其速度往往不如同参数量的 MobileNet。

  • 应用建议 :如果你的业务场景需要毫秒级延迟,请考虑 MobileViTSwin Transformer(利用窗口注意力降低计算量)。

6.2 实际项目避坑指南

  1. 输入分辨率:尽量保持为补丁大小(如 16)的整数倍。
  2. 数据增强:ViT 极其依赖强数据增强(Mixup, Cutmix, RandAugment)。如果你的训练只用了简单的裁剪翻转,ViT 很难超越 ResNet。

7. 总结与展望

ViT 的出现标志着视觉与语言(NLP)模型架构的统一。它告诉我们,只要数据量足够大,通用的计算模型(Transformer)可以取代精细设计的专用结构(CNN)。

AI 创作声明:本文部分内容由 AI 辅助生成,并经人工整理与验证,仅供参考学习,欢迎指出错误与不足之处。

相关推荐
一个帅气昵称啊2 小时前
AI搜索增强C#实现多平台联网搜索并且将HTML内容转换为结构化的Markdown格式并整合内容输出结果
人工智能·c#·html
pulinzt2 小时前
【python】第六节anacoda+配置Jupyter notebook
人工智能·python·jupyter
Python毕设指南2 小时前
基于机器学习的农产品价格数据分析与预测系统
人工智能·机器学习·信息可视化·数据挖掘·数据分析·毕业设计
X在敲AI代码2 小时前
open-cv轻松入门
人工智能·opencv·计算机视觉
Fairy要carry2 小时前
面试-解码技术Decoding
深度学习
郭涤生2 小时前
AWB算法基础理解
人工智能·算法·计算机视觉
下海fallsea2 小时前
Threads逆袭X之后:Meta的社交围剿战与变现困局
人工智能
逄逄不是胖胖2 小时前
《动手学深度学习》-49Style_Transfer实现
pytorch·python·深度学习
TechubNews2 小时前
巨鲸入海:纽交所代币化证券平台瞄准全天候交易与即时结算
大数据·人工智能