pycharm怎么开始写代码_pycharm安装好之后怎么使用

pycharm怎么开始写代码_pycharm安装好之后怎么使用深度学习如何入门?本题已加入知乎圆桌 »「机器学习 · 学以致用」,更多「机器学习」相关话题讨论欢迎。深度学习的知识范围虽然深度学习和计算机专业看上去很相关,但实际上这完全是两个领域。二者的交集只有向量化计算、自动求导等少数技术。深度学习本身的知识,小半部分是从论文

深度学习如何入门?

本题已加入知乎圆桌 »「机器学习 · 学以致用」,更多「机器学习」相关话题讨论欢迎。

深度学习的知识范围

虽然深度学习和计算机专业看上去很相关,但实际上这完全是两个领域。二者的交集只有向量化计算、自动求导等少数技术。

深度学习本身的知识,小半部分是从论文、教程中学习到的数学原理、网络架构等理论知识,大半部分是靠亲手实践踩坑的实践经验。

因此,

  1. 不用太担心深度学习的编程难度。由于现在编程框架已经十分成熟了,哪怕是之前完全没有编程基础的人,也可以快速上手深度学习编程。
  2. 深度学习本身的知识更多要靠读论文、学理论、花大量时间做实验才能学会。

不过,即使如此,学习编程对于深度学习来说还是很有必要的。对于初学者来说,运行自己编写的程序,才是近距离感受深度学习的最佳方式。等编程技术成熟了,才可以完全抛开编程,把精力专注于看最新的论文上。

入门深度学习

在代码基础薄弱的前提下,想入门深度学习,最好不要去一上来就学高度封装的编程框架,看最新的论文,复现较新的代码。基础没打好就去学一些较难的东西,就像搭建空中楼阁一般,学习效率极低。我建议按照如下步骤从浅至深地学习:

  1. 如果几乎之前没有编程经验,最好先通过学习 Python,学会编程的基本思想,掌握变量、函数、运算、类等基本知识。如果有其他编程语言的学习经验,随便看看 Python 的语法即可。
  2. 能掌握 Python 的基本用法后,去选择一部带编程指导的教材(文字或视频)。学完了理论知识后,一定要去动手实践。写代码时,不管是用 NumPy,还是用 TensorFlow、PyTorch,一定不要去用高度封装的函数,而只用最基本的矩阵乘法、向量化计算。反向传播、梯度下降、归一化、mini-batch、优化器、CNN、RNN……这些知识只要动手写一遍,一下就学会了。
  3. 等基础知识掌握得差不多,最基本的编程水平也有了后,再开始学习深度学习编程框架。有了之前从零实现的经验,学编程框架的难度就像学完了 C++去学 Python 一样简单。学编程框架时,一方面从官方教程的 Hello World 项目入手,学习框架高度封装的函数的基本用法;另一方面,去看一些经典工作(比如几乎全任务通用的 ResNet)用编程框架实现的源码,从实践与示例中学习。
  4. 学到这里,你差不多就已经有了十分扎实的深度学习功底,可以去看较新的论文了。怎么看论文学最新的知识就是另一个话题了。一个指导原则是:先看综述,同时参考一些代码质量较高的开源工作(很多开源代码的质量一塌糊涂,绝对不能成为初学者的学习对象)。

学习资源

上一节只讨论了入门深度学习的步骤,这里我再给出每步的一些学习资源。

Python

如果有编程基础的话,去搜索引擎上随手一搜「Python 教程」,就可以找到许多合适的资料。比如说:

随便跑几个例子就学懂 Python 了。

如果编程经验不是难么丰富的话,除了参考上述简洁的资料之外,可以看讲解得更细致的视频、文字教程。从零学 Python 算是另一个话题了,可以去专门搜索一下这方面的学习路线。

深度学习基础

对于初学者,选深度学习的教材时,最重要的其中的编程教学。优质的入门教材很多,比较出名的有:

  • 吴恩达的《深度学习专项》(Deep Learning Specialization)。网上有免费的视频教程,如果想写课后作业拿证书需要在 Coursera 上付费。这门课会先使用 NumPy 复现神经网络的基础构件,之后用 TensorFlow 学习更复杂一点的 CNN、RNN 的知识。
  • 李沐的免费视频教程《动手学深度学习》。这门课也是基于 PyTorch 框架,先只用底层函数实现基础功能,再用框架的高级功能去学习更复杂的知识。

最近知乎推出了学习平台「知学堂」,上述这些视频教程也能在这里找到。以后这个平台还会加入更多的教程。在「知学堂」里找深度学习的视频教程是一个比较便捷的选择。

文字教程也有很多,我所知道的只有

前言 – 《动手学深度学习》 文档

这份《动手学深度学习》的文档版。这份文字教程已经讲解得足够细致了。

这里,还推荐一下我自己的写的吴恩达《深度学习专项》的学习笔记和代码实战笔记:

周弈帆:我的「吴恩达深度学习笔记」汇总帖(附 18 个代码实战项目)

GitHub – SingleZombie/DL-Demos: Demos for deep learning

对于大多数的教程,无论制作得多么优秀,都无法提供足够的编程指导。这是因为编程更多要靠实践来学习,而难以通过课堂上的讲解来学习。如果非想通过上课来学习编程,最好的方式找一个助教,自己写代码碰到了问题,立刻去问助教。

我写的笔记就是起到一个「助教」的作用。尤其是在代码实战的笔记中,我基于 Python 和 NumPy 的基础函数,从某种意义上复现了《深度学习专项》中课后习题(比如实现全连接网络、正则化、Adam 优化器)的题目和解答,并对所有代码都进行了细致的讲解。哪怕是零基础的人,也能够看懂我写的代码和讲解。我相信,我写的这份笔记能够帮助大家在学习深度学习时少走一些弯路,尽快地通过复现底层构件来高效入门深度学习。

另外,如果只想快速上手深度学习,就不要浪费时间去看传统机器学习的参考书了。

编程框架与现成代码

对于 PyTorch 来说,其实最有用的就是官方的「Hello World」项目:

PyTorch Tutorials 1.11.0+cu102 documentation

,看完了就基本知道 PyTorch 的主要用法了。

同样,官方网站上也收录了很多具体任务的代码实现教程。一边看着教程里的代码,一边参考 API 文档,学起来还是很快的。

另一方面,除了学习框架的基本知识外,还可以直接去看一些现成的 PyTorch 项目,通过示例来学习。

这里,我十分推荐基于 PyTorch 的 OpenMMLab 项目,该开源项目复现了分类、检测、分割、生成等多个 CV 任务的前沿模型。这些 PyTorch 开源代码不见得是写得最好、最合理的,但起码是写得十分工整,读起来没什么问题的,可以作为初学者的学习对象。

以问题中的目标检测为例,可以去参考 MMDetection。参考一下官方文档,把项目安装好,学习一下代码库的基本用法,就可以去读源码了。读源码时,最简单的方法是使用文字搜索,找到对应模块的实现代码,比如去 MMDetection 里搜索"FasterRCNN"。同时,跑新接触的开源库时,可以先随便运行一个 Demo 项目,使用单步调试功能,看看代码的运行逻辑是怎么样的,各个模块之间是怎么调用的。

读开源代码时,千万不要因开源项目的复杂度而产生恐惧。代码都是人写的,都是一点一点从一些很基础的功能开始写起来的。看这些源代码时,一方面要从学习的角度,看看你不会写的地方,别人是怎么写的;另一方面,要自信地带着批判性的眼光,看看别人写的东西让你来写,你会怎么写得更好。带着这样的态度,不要畏惧,一点一点看,学习开源代码的效率其实是十分高的。

总结

在编程基础较弱时上手深度学习,最重要的不是去看最新的内容,而是找一些对编程介绍得十分详细的深度学习教材。学完深度学习的基础知识后,再去专精 PyTorch 等编程框架。同时,随着编程知识、理论知识、对框架的熟悉度不断提升,可以慢慢开始接触最新的论文,并参考性地阅读新论文的开源代码。

也欢迎使用知乎新推出的「知学堂」APP。「知学堂」有全面的 Python 编程基础和深度学习的教学视频,足以满足深度学习入门的需求。

原文作者:周弈帆

使用 App 查看完整内容

目前,该付费内容的完整版仅支持在 App 中查看

🔗App 内查看

今日论文推荐

论文名:ShapeLLM: Universal 3D Object Understanding for Embodied Interaction

论文链接:arxiv.org/pdf/2402.1776

导读

3D形状理解,作为在数字和物理世界中塑造智能系统 的基本能力,已经见证了图形、视觉、增强现实和具 身机器人的巨大进步。然而,要被现实世界的智能体 有效部署,必须满足几个关键标准:(i)需要捕获足够的 3D几何信息,以进行精确的空间和结构处理。(ii)模型应该被赋予与对象(通常是物理上的)具 体交互方式的基础知识,以便进行功能理解。(iii)需要一个通用接口作为信息 编码和解码之间的桥梁,这可以帮助翻译智能体反应 的高阶指令,如对话响应和具身反馈。

大型语言模型(llm)的最新进展已经在跨任务的基础知识和统一推理能力方面取得了 前所未有的成功。它使得 利用语言作为通用接口成为可能,从而使llm中嵌入的 综合常识知识能够增强对3D形状的理解。这在以物理 为基础的任务中尤其明显,在这些任务中,常识知识 的财富简化了对对象的功能、移动性和动态等的解释。然而,在将llm纳入3D对象理解(特别是依赖于精确几 何的具体化交互)时,上述挑战仍然存在,目前尚未 得到充分探索。

简介

本文提出了第一个为具身交互设计的三维多模态大型语言模型(LLM) SHAPELLM,探索了一种基于 三维点云和语言的通用三维对象理解。SHAPELLM是 建立在一个改进的3D编码器上,通过扩展RE-CON到RECON++,受益于多视图图像蒸馏,增强几何 形状的理解。通过使用RECON++作为llm的3D点云输 入编码器,SHAPELLM在构建的指令遵循数据上进行 训练,并在我们新的人工评估基准3D MM-Vet上进行 测试。RECON++和SHAPELLM在3D几何图形理解和 语言统一的3D交互任务方面实现了最先进的性能,例 如具体化的视觉接地。

方法与模型

总体架构

这项工作的主要目标是通过使用LLM作为通用接口进行 交互式3D理解。从最近的视觉理解工作中汲取灵感, 所提出的SHAPELLM由一个预训练的3D编码器和一个 LLM组成,分别用于有效的3D表示学习和理解。具体来 说,我们采用LLaMA作为我们的LLM,建立在之前 工作成功的基础上。对于3D编码器,我们在 RECON的基础上提出了一种新的3D模型,命名为 RECON++,并对其进行了多项改进,因为3D理解通常需 要更多的信息,如精确的空间和多视图细节等。为了确 保与LLM输入的兼容性,从RECON++获得的3D对象的 表示在被馈送到LLM之前经历了一个线耳投影。为了进 一步提高低级几何理解,这有利于6自由度姿态估计等任 务,我们附加了由三维坐标线性投影获得的绝对位置编 码(APE)。此外,我们使用带有可学习提示的前缀调优 来自适应调节APE和RECON++表示的不同 语义。

如何缓解交互式3D理解数据甜点?

大多数已发表的3D数据通常以3D物体-字幕对的形式呈 现,缺乏互动风格。尽管一些同时进行的工作试 图构建交互式3D理解数据集,但问题和答案(问答)主要 基于注释的标题,通常是pro提供有限的视角而没有足够的细节。此外,这些作品通 常局限于语义理解,而没有考虑具身交互。为了解决这 些限制,我们的工作使用GPT-4V(视觉)构建了基于3D物 体的多视图图像的问答对。对于数据多样性,我们 明确引入了六个方面作为提示,如图3所示。在下文中, 我们分别提供了关于一般语义理解和具身对象理解的数 据收集和构建的细节。

Data Objaverse-LVIS和GAPartNet是数据源。Objaverse-LVIS涵盖了1156个LVIS类别,我们对每个 类别的前10个“喜欢”2个3D对象进行采样,并为每个样 本生成问答对。在滤除有噪声的问答后,我们获得了~ 45K指令遵循样本。我们使用来自GAPartNet的12个类别, 通过删除“Remote”来避免太多的小框,这导致从覆盖~ 1.1K个不同对象的~ 4K对象状态的~ 8K部分构建过滤的~ 30K问答样本。

一般语义理解这旨在增强模型在视觉识别、知识整合、 空间理解和其他方面的泛化能力。我们提示GPT4-V根据 从3D主题的四个不同视图捕获的图像在六个不同方面生 成问答,如图3所示。

具身物体理解全面理解部件级别的空间位置和语义,对于 促进具身场景中有效的物体抓取和交互至关重要。幸运的 是,GAPartNet提供了丰富的部件注释,包括语义和 姿态,这对构建主题的具身交互部件的指令调优数据很有 帮助。具体来说,给定一个3D对象,问题是基于其不同 部分的语义制定的,答案是在语义和3D位置上构建的。这些位置被表示为6自由度的3D边界框,以直线化的 Python多维列表格式表示,记为[[x1, y1, z1], [x2, y2, z2],…, [x8, y8, z8]],以满足llm文本对话响应的特点。对象的规范空间决定了坐标序列。使用边界框坐标利用固 有的空间关系,允许llm很容易地学习这些模式并生成准 确的输出坐标。这种方法可以为具身操纵提供特定的位置 信息。

RECON++:扩展3D表示学习

与物体的交互,如物体抓取,通常需要在多 层次和多粒度上准确感知3D形状信息。这对3D表示提出 了更高的要求,要求对3D几何的整体理解有更高的标准。

然而,现有的3D跨模态表示学习方法主要 是从单视图2D基础模型中提取高分辨率的物体特征, 导致单方面的形状理解。此外,它们通常采用多视图图 像作为数据增强策略,将学习到的表示强加于所有视图 的平均表示。因此,准确的3D形状信息是缺失的。最 近,RECON利用重建引导的对比来解决局部掩模 数据建模和全局跨模态对齐之间的模式差异。这在各种 任务中产生了显著的性能,包括迁移学习、零样本分类 和部分分割。然而,其潜力受到预训练数据稀缺的 阻碍。

为了解决上述局限性,本文提出了RE-CON++,并 进行了多项改进。首先,多视图图像查询标记协同理解 跨不同视图的3D对象的语义信息,包括传递RGB图像 和深度图。考虑到预训练数据在姿态方面的无序性,本 文提出了一种基于二部图匹配的跨模态对齐方法,隐 式学习3D物体的姿态估计。其次,我们扩大了RECON 的参数,并扩大了预训练数据集的规模,以 获得鲁棒的3D表示。

表示N为多视图图像的数量,Ii 是来自第i个视图的 图像特征,Qi 表示第i个视图的全局查询。继Carion等人 之后,我们以最低的代价搜索N个元素的最优排列σ:

其中Lmatch(Ii, Qσ(i))是第i个视图图像特征Ii 和匹配查询 Qσ(i) 之间的成对匹配成本,使用置换σ。在实践中,我们采用余弦相似度作为 匹配代价。通过这种方式,学习每个视图的查询,以从 3D点云中收集准确的3D形状信息。将本地3D点云编码 器和全局3D点云解码器的特征连接在一起,为多模态 llm的3D理解提供了全面的信息。

实验与结果

在表1中,我们首先通过对scanobject – jectnn和 ModelNet进行微调来评估自监督RECON++的表 示迁移学习能力,这是目前最具挑战性的两个3D对象 数据集。ScanObjectNN是来自真实场景数据集ScanNet 的约15K个3D物体点云的集合,涉及15个类别。ModelNet是从干净的3D CAD模型中收集的最经典的 3D对象数据集之一,其中包括覆盖40个类别的约12K 网格3D CAD模型。在PointGPT之后,我们采用中 间微调策略并使用后预训练在ShapeNetCore上通过自监督预训练学习到的通用 语义迁移阶段。为了进行公平的比较,我们的基础模型 和大型模型在层、隐藏大小和注意力头方面采用了与 PointGPT相同的架构。表1显示:(i) RECON++的表示性 能显著超过其他基线,达到了最先进的结果。(ii)特别 是,RECON++在最具挑战性的ScanObjectNN PB T50 RS基准上实现了95.25%的显着准确率,将Transformer 基线提高了+16.14%。

零样本3D开放世界识别与CLIP类似,所提出模型 对齐了语言和其他模态的特征空间,从而产生了零样本 开放世界识别能力。在表2中,我们比较了零样本3D开 放世界物体识别模型,以评估可泛化的识别能力。继 OpenShape之后,我们在ModelNet、 scanobject – jectnn和Objaverse-LVIS上进行了评 估。Objaverse-LVIS是一个涉及1156个LVIS类别的~ 47K个干净3D模型的基准。我们将RECON++与2D 推理方法、ShapeNet预训练方法和“en – sembles”数据 集预训练方法进行了比较。从表2可以得出结论:i)相比 2D推理和shapenet预训练方法相比,RECON++的性能 明显优于2D推理和shapenet预训练方法,这表明了3D点 云作为输入和扩展的必要性。ii)与在“集成”数据集上 训练的最先进的方法相比,re – con++在所有基准测试 中都表现出优越或同等的性能。值得注意的是, RECON++-L实现了显著的顶级1精度,在最具挑战性的 Objaverse-LVIS和ScanObjectNN基准测试中,分别比 Uni3D-L高+0.6%和+7.2%。

可视化结果

总结

本文提出了一种具有泛化识别和具身交互理解能力的三 维多模态法学模型——SHAPELLM。我们首先提出了一 种新的三维点云编码器recon++,利用多视图蒸馏和缩放 三维表示学习,作为SHAPELLM的基础三维表示编码器。对构建的指令遵循数据进行3D视觉指令调优,以实现一 般和具身理解。还建立了一个3D评估基准3D MM-Vet, 用于评估具身交互场景中的4级能力,从基本感知到控 制语句生成不等。

2024年1月至2月,三位人工智能领域的顶级专家——Geoffrey Hinton, Yann LeCun和Karl Friston,在不同场合分享了他们对人工智能未来发展的看法。以下是他们观点的总结:

理解能力

  • Hinton: 认为人工智能已经具备一定的理解能力。他以GPT-4为例,指出GPT-4能够生成只有理解后才能产生的结果,因此说明人工智能能够理解。
  • LeCun: 认为人工智能目前缺乏理解能力。他认为,人工智能缺乏理解力的顶层设计,因此不可能拥有真正的理解能力。
  • Friston: 认为人工智能目前还不能算是真正的智能。他认为,人工智能缺乏生物物理学基础,因此无法像人类一样进行理解。

安全风险

  • Hinton: 认为人工智能发展速度过快,不同机器间通讯能力不断增强,可能带来安全风险。他认为,人工智能可能会超越人类智能,并对人类构成威胁。
  • LeCun: 认为人工智能发展方向清晰,可以通过开源等方式来控制风险。他认为,开源可以促进人工智能技术的发展和安全性的提升。

发展方向

  • Hinton: 认为人工智能的发展方向是继续扩大模型规模,以获得更强大的性能。
  • LeCun: 认为人工智能应该学习人类甚至动物的高效学习方法,以减少对数据和参数的依赖。
  • Friston: 认为“深度学习是垃圾”,人工智能应该从生物学角度研究智能,模拟生物体从细胞到社会的复杂系统。

结论

三位大佬对人工智能未来发展的看法存在分歧,但都认为人工智能是一项具有巨大潜力的技术,需要谨慎发展和应用。未来,人工智能将如何发展?它将给人类社会带来哪些影响?这些问题值得我们深思。

参考文献:

bilibili.com/video/BV1Z
youtube.com/watch?
youtube.com/watch?

END

AI武者士 — 集合智能,自由能原理,通向智能涌现的第n+1条路

每个人的路线图都不一样。看了西瓜书南瓜书,鱼书,吴恩达视频,李沐动手学深度学习后,我总结如下:

1,入门最好少看书,多看 csdn 上的帖子(这样说政治不正确,但是我觉得实用),搜一搜深度学习, BP 神经网络,CNN ,rnn 这些关键词,通过一个例子快速建立概念

2,其他书籍作为补充阅读工具书查阅即可,查漏补缺,建议顺序 西瓜书南瓜书(bp 网络推导简短清晰)—鱼书—动手学

什么是概率分布?

概率频率分布,是指一个事件的所有可能的结果,以及其结果对应的概率的集合

为什么要计算概率分布?

某些时候,预期值给不了我们太多的信息。

而概率分布提供了每个可能取值的相对概率的详细描述,使我们能够更好地理解和处理不确定性。

示例

假设有两个六面骰子,我们想知道,投掷这两个骰子一次,得到的两个骰子的点数之和的预期值是多少?

这个事件符合计算预期值里提到的数值变量计算的方法。

因此,我们应该将每一个点数之和乘以投掷出这个点数之和的概率,然后将每一个计算出来的概率值进行累加。

计算公式如下:

E(A)= P(2).2 + P(3).3+… + P(12).12

我们可以把所有的组合都列出来:

点数之和为2的组合:(1,1)

点数之和为3的组合:(1,2), (2,1)

点数之和为4的组合:(1,3), (2,2), (3,1)

点数之和为5的组合:(1,4), (2,3), (3,2), (4,1)

点数之和为6的组合:(1,5), (2,4), (3,3), (4,2), (5,1)

点数之和为7的组合:(1,6), (2,5), (3,4), (4,3), (5,2), (6,1)

点数之和为8的组合:(2,6), (3,5), (4,4), (5,3), (6,2)

点数之和为9的组合:(3,6), (4,5), (5,4), (6,3)

点数之和为10的组合:(4,6), (5,5), (6,4)

点数之和为11的组合:(5,6), (6,5)

点数之和为12的组合:(6,6)

能够看到,点数之和为2以及12的概率是1/36,点数之和为3以及11的概率是2/36。

依次类推,将每个点数之和的概率以及点数之和的数值代入公式。

E(A)的最终结果为7。

虽然通过预期值计算,我们知道了预期值为7,但是预期值本身并不提供关于每个具体点数之和的概率信息。

它并没有直接告诉我们其它的点数之和的概率是多少,也未展示其他点数之和的概率分布情况。

实际上,你可能得到2、12的机会较小,而得到7的机会较大。

只有预期值的话,无法揭示这种点数之和的分布特征。

又或者,你可能想要知道在点数之和为8和点数之和为11之间的区域内的概率,以便更好地制定下注策略。

只看预期值,可能无法提供这种局部的概率信息。

为了更为详细、清晰的信息,以及了解各个点数之和的概率走势,我们需要创建一个概率分布。

概率分布提供了对每个可能取值的相对概率的详细描述。

概率频率分布示例

在下面这个图里,我们能看到每个点数之和,以及它们的概率,出现的频率。

将这12种点数之和以及它们的概率放在一起的集合,它就是一个概率频率分布。

我们可以通过表格或图表来表示这个概率频率分布。

X轴代表各种可能出现的点数之和。

Y轴代表每个点数之和出现的概率。

这样,我们就可以选择最高概率的一段区间进行预测,例如6,7,8的区间,而不是仅仅只依靠一个预期值来预测。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/8024.html

(0)
上一篇 2024年 5月 9日 下午5:10
下一篇 2024年 5月 9日 下午5:21

相关推荐

关注微信