机器学习和神经网络 - 页 16

 

初学者机器学习课程(第 6-10 部分)


初学者机器学习课程

第 6 部分
  • 05:00:00 在本节中,讲师讨论了高方差和高偏差模型的概念,其中可能会出现过拟合和欠拟合。机器学习的目标是使用低偏差和低方差模型来实现最佳精度。讲师给出了集成学习的示例,其中多个模型根据数据进行训练,并从每个模型中获取预测以进行投票,并最终确定正确答案或预测。在集成学习中,大多数人的回答往往比个人的回答更准确,教师会使用测验问题和选举投票等例子来解释这个概念。

  • 05:05:00 在本节中,讲师概述了集成学习及其如何用于分类和回归问题。在分类中,考虑了大多数选票,而在回归中,基础模型输出的均值或中值用于最终预测。集成学习中使用的技术包括 bagging、boosting、stacking 和 cascading,大多数 Kaggle 竞赛获胜者都使用某种形式的集成学习技术。此外,讲师指出,亚马逊和谷歌等公司在自己的产品中使用了这些算法,例如 XGBoost 和随机森林。

  • 05:10:00 部分讨论装袋的基础知识,这是一种集成学习技术,也称为引导聚合。 Bagging 涉及随机采样训练数据的子集和每个子集上的训练模型。这个想法是通过使用多个模型的集合来减少过度拟合并提高模型的准确性。本节解释了 bagging 的工作原理,包括如何对数据进行采样、训练模型子集以及组合预测以获得更高的准确性。

  • 05:15:00 在本节中,演讲者解释了 bagging 的概念,这是一种提高机器学习模型准确性的技术。 Bagging 涉及通过替换对数据进行采样,然后在每个样本上训练模型。然后将各个模型组合起来形成一个聚合模型,从而产生更准确的预测。演讲者指出,装袋是一种概念上简单的技术,不涉及高等数学。

  • 05:20:00 在本节中,演讲者讨论了 bagging,它有助于减少高方差和低偏差基础模型的方差。 Bagging 结合了这些模型来创建更大、低方差和低偏差的模型。在对数据进行采样时使用行采样,这涉及仅对来自大量数据分布的行进行采样。需要注意的是,在bagging中,只使用了行采样,不像随机森林,它同时使用了行和列采样。 Bagging 也称为引导聚合,它涉及引导和聚合基础模型。

  • 05:25:00 在本节中,讲师回顾了套袋技术,这是一种在高方差和低偏差模型中减少方差的方法。 Bagging 涉及获取数据子集进行训练,并结合大多数投票进行分类。讲师认为,对此的强大算法是随机森林,它结合了决策树、套袋和列抽样。决策树做出简单的决策并拆分节点,而装袋涉及获取数据子集进行训练。还使用列采样或特征装袋,获取列的子集。讲师断言随机森林很强大,谷歌、Quora 和亚马逊等大公司都在使用它们。

  • 05:30:00 本节机器学习讲师讲解bagging和random forest的概念。 Bagging 涉及通过替换对行进行采样并在子集上训练决策树,而随机森林将列采样添加到混合中。这意味着行和列都被采样,由于集成学习技术,这创造了一个更高性能的模型的机会。讲师还提到袋外 (oob) 点的概念,即抽样后遗漏的点,可用于交叉验证。最后,讲师回顾了装袋和随机森林之间的主要区别。

  • 05:35:00 在本节中,视频讨论了机器学习中的套袋和随机森林技术。 Bagging 涉及行采样,这会导致更大的模型,从而减少方差。随机森林是相同的,但以列抽样和决策树作为基础模型。决策树中的训练复杂度是 n log m 乘以 n 乘以 d,而在随机森林中,它是 d 乘以 k 乘以 n。该视频还讨论了随机森林如何简单地并行化,从而使其易于训练。最后,引入了极度随机树的概念,在决策树中尝试可能的值来确定阈值。

  • 05:40:00 在本节中,演讲者讨论了极端随机树的概念,作为尝试随机森林中每个可能值的计算成本高的方法的替代方法。通过对列和行的子集进行采样,可以减少方差,但与随机森林相比,获得良好结果的机会较小。演讲者还提到了由于时间复杂性而在大型数据集上使用随机森林的缺点,但建议尝试一下并使用网格搜索调整超参数。然后他们介绍了用于实现随机森林的 scikit-learn API,并提到了一个用于微调超参数的项目。

  • 05:45:00 在本节中,将讨论随机森林分类器及其参数和属性。第一个参数是 n_estimators,它是使用的决策树的数量。还解释了属性选择标准和树的最大深度以及其他参数,例如拆分所需的最小样本和最大特征数。还提到了特征重要性的使用,以便为模型选择重要特征。还简要讨论了随机森林回归器与分类器的相似之处。

  • 05:50:00 在视频的这一部分,讲师讨论了集成技术,尤其是 Boosting。 Boosting 是另一种流行的集成学习技术,讲师概述了 Gradient Boosting、Adaptive Boosting 或 AdaBoost,以及 Extreme Boosting 或 XGBoost。导师还提到在 GitHub 上有一个问题集可供观众尝试,并鼓励观众订阅 YouTube 频道以支持创作更多免费内容。

  • 05:55:00 在本节中,视频涵盖了机器学习中的装袋和提升主题。 Bagging 用于通过进行列和行采样,然后进行聚合来减少模型中的高方差。另一方面,提升用于通过将弱学习器相加地组合成强模型来减少模型中的偏差。使用 boosting 的核心思想是减少高度偏差模型中的偏差。该视频使用训练数据示例提供了增强的基本直觉。

第 7 部分

  • 06:00:00 在本节中,演讲者解释了 boosting 背后的核心思想及其如何最大限度地减少错误。 Boosting 是一种监督学习技术,它涉及在训练数据(x 和 y)上训练模型,每个示例都有一个标签。然后使用该模型预测每个输入的输出,并测量预测值和真实值之间的差异以计算损失。该模型经过训练以减少残差,重点关注被错误分类或具有高 MSE 或 MAE 的数据。提升涉及在残差上拟合多个模型,通过为每个训练示例拟合它来最小化误差。最终模型是所有这些模型的总和,由 alpha 加权。

  • 06:05:00 在本节中,将解释提升的概念,这是一种减少机器学习模型偏差的技术。 Boosting 通过拟合先前模型的残差将弱学习器转换为强学习器,从而产生在训练集上表现良好的低偏差和低方差模型。但是,如果模型在训练集上表现太好,则存在过度拟合的风险。讨论了几种增强技术,例如梯度增强、自适应增强和极限增强。此外,还简要提到了 bagging 背后的思想,这是另一种提高模型性能的技术。

  • 06:10:00 在这一节中,讲师解释了梯度提升的概念,梯度提升是一种将弱学习器转化为强学习器的提升算法。梯度提升是大型科技和生产公司使用的一种强大算法。它是一种可微分的成本函数,允许采用导数来改善训练集下的误差。讲师提供了梯度提升的真实示例,并讨论了可微分成本函数及其在算法中的重要性。讨论包括在梯度下降中使用训练数据和成本函数,使其成为机器学习中的有用工具。

  • 06:15:00 在本节中,演讲者解释了使用提升训练模型的算法。该算法包括用一个常数值初始化模型,计算残差或伪残差,对模型求代价函数的偏导数,将基础学习器拟合到先前模型的残差上,然后迭代每个模型以得到计算伪残差并拟合基学习器。目标是找到使成本函数最小化并提高模型准确性的 lambda 值。

  • 06:20:00 在本节中,演讲者解释了梯度提升算法的过程,该算法首先使用一些常数初始化模型,然后应用 for 循环为每个训练示例取出残差。然后,该模型将基础学习器拟合到残差并计算每个模型的乘数 lambda m。更新模型,将之前的模型拟合之前的残差,将之前的模型与求解一维优化问题后得到的新模型相加得到最终模型。演讲者还介绍了正则化和收缩的概念,以及为什么由于高偏差而需要在提升中使用它们。

  • 06:25:00 在本节中,视频讨论了如何使用提升来减少机器学习模型中的高偏差。提升涉及在每次迭代期间拟合先前的模型残差,这可能导致过度拟合和方差增加。为了避免这个问题,可以使用称为 v 的可学习参数添加正则化和收缩。根据经验,已经发现 v 的值等于 0.1 会导致显着的改进。该视频还介绍了梯度提升决策树的时间复杂度以及通过 scikit-learn API 实现梯度提升。

  • 06:30:00 在本节中,演讲者讨论了使用 Scikit-learn API 实现梯度提升分类器。他们解释了所涉及的不同参数,例如损失、学习率、估计量等。学习率用于减少过度方差并防止过度拟合。 Gradient Boosting Classifier 的实现只是一行代码,预测概率给出了数据对某一类为真的概率。演讲者还简要讨论了 Gradient Boosting Regressor 的实现,并强调了从文档中学习的重要性。

  • 06:35:00 在“初学者机器学习课程”视频的这一部分中,讲师讨论了 AdaBoost 分类器及其使用 Cython API 的实现,以及极端梯度提升 (XGBoost) 算法。讲师解释说,XGBoost 是 Gradient Boosting 的高级版本,它通过行和列采样添加随机化,使其成为解决机器学习问题的强大工具。本节还介绍了 XGBoost 中使用的不同参数及其在微调模型中的重要性。

  • 06:40:00 在本节中,演讲者讨论了梯度提升树、GB 线性和 DART 等机器学习算法的不同包。他们讨论了可以调整的不同参数,包括评估矩阵和正则化,以及它们如何影响模型。演讲者还提到了 XGBoost 并展示了它在 Python 中的使用方式。他们强调了对模型进行微调的重要性,以及微调如何提高准确性。最后,演讲者介绍了堆叠的概念以及它如何帮助提高模型的准确性。

  • 06:45:00 在本节中,讲师介绍了堆叠的概念以及它与装袋和提升的区别。堆叠涉及采用不同的基础学习器,这些学习器经过高度调整并具有良好的偏差和方差权衡,并在不同的数据子集上训练它们以创建不同的模型。这与 bagging 不同,bagging 用于通过使用具有高方差和低偏差的基础学习器来减少高方差,而 boosting 则基础模型不一定经过高度调整。讲师提供了一个堆叠不同基础模型的示例,例如逻辑回归、支持向量机和 k 最近邻,这些模型经过广泛的微调以生成具有良好偏差-方差权衡的良好模型。

  • 06:50:00 在本节中,演讲者解释了堆叠背后的基本直觉,这是一种集成学习。堆叠涉及将训练数据划分为子集,并在每个子集上训练不同的分类器。这些基础学习器擅长平衡偏差和方差。不同于具有高方差和低偏差的 bagging,以及具有高偏差和低方差的 boosting。从每个模型获得预测后,元分类器将根据预测的类标签或其概率进行训练。这个想法是结合这些集成模型的预测来创建一个更准确和更强大的分类器。

  • 06:55:00 在本节中,讲师讨论了堆叠,这是一种组合多个模型以创建具有更好性能的新模型的方法。该过程涉及训练多个基础模型并使用它们的预测作为特征来训练二级分类器,该分类器输出最终预测。讲师展示了使用 sklearn 库在 Python 中使用逻辑回归、k 最近邻、高斯朴素贝叶斯和随机森林模型创建堆叠分类模型的示例。他们还演示了如何使用 mlx10 库中的堆叠分类器。

第 8 部分

  • 07:00:00 在本节中,演讲者解释了如何使用 K 近邻、随机森林和逻辑回归等不同模型实现堆叠分类器。他们通过实例化对象并执行三重交叉验证来选择具有最高精度的最佳模型。演讲者还演示了如何绘制决策边界并使用网格搜索来调整偏差和方差权衡。通过选择最佳参数和特征,堆叠分类器可以提供比单个模型更准确的预测。

  • 07:05:00 在这一节中,讲师总结了前面几节关于集成学习的主题,包括装袋、随机森林、提升、梯度提升决策树、AdaBoost 和 XGBoost。讲师还概述了堆叠并提供了实际算法的示例。该部分最后提醒您订阅讲师的 YouTube 频道和有关机器学习课程 CS01 的信息,该课程涵盖集成学习以外的主题,包括神经网络、GAN 和卷积神经网络。最后,讲师介绍了接下来关于无监督学习和未来项目的部分。

  • 07:10:00 在本节中,演讲者介绍了无监督学习的概念,即仅访问没有标签的数据点或监督者来指导学习过程。与输出已知的监督学习不同,无监督学习涉及对数据点进行聚类以更好地理解它们。作为一个鼓舞人心的例子,演讲者建议根据相似性对像亚马逊这样的公司的客户进行细分,即使没有标签表明哪个客户属于哪个细分市场。无监督学习的目标是发现数据集中的模式和结构。

  • 07:15:00 在本节中,讲师讨论无监督学习及其应用。他解释说,数据科学家可以使用无监督学习将客户分成几类,并根据他们在网站上的活动提供产品推荐。他以亚马逊为例,说明一家使用无监督学习进行客户细分和推荐引擎的公司。讲师还解释说,无监督学习可用于高维空间中的聚类,相似的项目彼此靠近,而不同的项目则远离。他举例说明了生物学中的序列分析,以及将商业中的相似集群分组作为无监督学习的应用。总的来说,讲师简要概述了无监督学习及其在各个行业的潜在应用。

  • 07:20:00 在本节中,演讲者讨论了机器学习的不同应用,例如将业务数据中的相似集群分组以进行有针对性的营销,以及使用推荐引擎根据用户活动推荐产品。演讲者还提到了用于对象检测的图像分割、用于确定文本是正面还是负面的情感分析,以及用于查找模型中异常值的异常检测。这些不同的应用展示了机器学习在不同领域的多功能性。

  • 07:25:00 在本节中,演讲者介绍了聚类主题以及不同类型的聚类算法,例如基于中心和基于密度的聚类算法。重点将放在 k 均值聚类算法上,将对其进行深入探讨。演讲者还鼓励观众解决问题集和项目,以更好地理解机器学习。演讲者强调了无监督学习的重要性,并展示了聚类如何应用于各个领域。 X 和 Y 平面上的聚类用于说明聚类的概念。总的来说,该部分突出了课程中即将涵盖的主题,并鼓励观众继续学习。

  • 07:30:00 在本节中,演讲者解释了无监督学习和聚类,其中涉及将数据分割到不同的聚类中。讨论了簇内和簇间距离的术语,其中簇内是指簇内数据点之间的距离,而簇间是指簇之间的距离。目标是集群内距离小,集群间距离大,这意味着集群内的数据应该相似,集群之间的数据应该不同。这被称为优化目标。

  • 07:35:00 在本节中,我们将了解聚类或无监督学习模型的评估技术。引入的第一个技术是 Dunn 指数,它表示簇之间的最大距离除以簇内的最小距离。目标是具有高 Dunn 指数,这意味着簇之间的距离应该很大,而簇内的距离应该很小。这种技术使我们能够评估聚类模型的质量。

  • 07:40:00 在本节中,讲师讨论聚类模型的评估技术。重点是Dunn指数,它是一个评价矩阵,用来判断簇内是否大,簇间是否小。讲师提供了邓恩指数的基本定义,其中涉及评估集群内和集群之间不同数据点之间的最大距离。讨论的另一种评估技术是 Davies-Bouldin 指数,它类似于 Dunn 指数,但有更多限制。讲师还提供了聚类的单行定义,即以特定方式将对象或元素分组在一起。

  • 07:45:00 在本节中,演讲者解释了聚类的基本定义,聚类是根据相似性和差异性将数据组织成组的过程。聚类有两种情况:簇内和簇间,分别衡量一个簇内的距离和所有簇之间的差异。演讲者随后讨论了不同类型的聚类,包括基于分区的聚类(将数据分成两个聚类)和层次聚类(使用树状图可视化聚类过程)。演讲者详细介绍了层次聚类中的凝聚聚类和分裂聚类,并提供了一个树状图示例来说明该过程。

  • 07:50:00 在本节中,讲师介绍了不同类型的聚类,包括基于分区的聚类、层次聚类、分离良好的聚类、基于中心的聚类和基于密度的聚类。讲师解释说,聚类就是对相似的对象进行分组,集群内的对象彼此相似,而集群之间的对象则不同。讲师还解释了如何使用不同的指标评估聚类模型的性能,包括 Dunn 指标和 Davis-Bouldin 指标。下一节将重点介绍 k 均值聚类,这是一种基于中心的算法。

  • 07:55:00 在本节中,讲师回顾了前面的小节,这些小节涵盖了无监督学习应用、聚类类型以及聚类的直觉和形式定义。然后重点转移到 k 均值聚类算法(也称为 Lloyd 算法)及其各种功能,例如初始化、质心、超参数、评估指标和限制。讲师提供了具有两个随机初始化质心的算法的可视化,并说明了分配步骤以及第一次迭代中的平均步骤。

第 9 部分

  • 08:00:00 本节讲师详细讲解k-means聚类算法。该算法涉及初始化k个质心,聚类分配,通过取出平均值更新聚类,并通过分配最近的数据点来更新质心。重复这个过程,直到质心不再变化,表明算法已经收敛。讲师还提到 k 均值聚类也称为 Lloyd 算法,涉及随机初始化质心。

  • 08:05:00 在本节中,演讲者解释了 k 均值聚类算法的步骤。他们首先选择簇数 (k),然后将每个点分配给最近的簇。他们通过取平均值并移动它来重新计算质心,然后重复该过程直到质心停止变化。优化目标是最小化成本函数,可以使用数据点与聚类质心之间的欧几里得距离来计算成本函数。成本函数也称为 SSE(误差平方和),目标是最小化集群内的可变性。演讲者指出,也可以使用除欧几里得之外的其他距离度量。

  • 08:10:00 在本节中,讲师解释了为什么在 K-means 聚类中质心的随机初始化会导致问题,并介绍了 K-means++ 算法作为解决方案。 K-means++ 涉及选择多个质心并选择最小化误差平方和 (SSE) 的质心。讲师还介绍了肘部法,该方法用于根据 SSE 与聚类数的关系图确定最佳质心数。建议使用 K-means++ 和 elbow 方法而不是随机初始化,以获得更好的机器学习聚类结果。

  • 08:15:00 在本节中,讲师解释了 k-means 的评估技术,它涉及通过使用误差平方和计算簇内点之间的距离来最小化簇内。质心的初始化对算法有影响,k-means ++ 技术是基于低 SSE 的多次运行选择质心的推荐方法。聚类的数量可以使用肘部法来确定,其中最佳 k 值是肘部转弯的点。讲师还提到了 k-means 聚类的一些局限性,例如对异常值的敏感性,这可以使用基于密度的技术(例如 DBSCAN 或层次聚类)来解决。 k 均值聚类的时间复杂度取决于输入大小、聚类数量和维度。导师推荐DSA精通课程,更好的掌握时间复杂度的概念。

  • 08:20:00 与 p1 和 p2 聚类,然后我们将 p4 添加到该聚类中。接下来,我们将这个集群合并为一个,最后将 p3 添加到集群中,最终得到一个集群。这是层次聚类的示例,这是一种根据数据点的相似性将数据点分组在一起,形成聚类层次结构的技术。本小节还将介绍凝聚聚类和分裂聚类,以及算法的手动计算。

  • 08:25:00 在本节中,演讲者解释了层次聚类以及将数字簇转换为簇层次结构的过程。给出的示例显示了集群如何根据相似性相互连接,直到只剩下一个集群。演讲者随后解释了两种类型的层次聚类 - 凝聚聚类和分裂聚类,并给出了这两种方法背后的直觉。凝聚聚类是一种自下而上的方法,其中更多相似的集群连接在一起,而分裂聚类是一种自上而下的方法,其中基于相似性将集群划分为更小的集群。

  • 08:30:00 在本节中,演讲者解释了层次聚类背后的基本直觉,它涉及创建数字或聚类的层次结构。聚类可以采用从上到下或从下到上的方法进行,具体取决于聚类类型、聚合或分裂。凝聚聚类涉及将不同的聚类合并为一个,而分裂聚类涉及将一个聚类分成单个组。演讲者接着解释了凝聚聚类的算法,该算法涉及计算邻近矩阵并重复合并集群和更新矩阵的过程,直到覆盖所有集群。最后,演讲者提供了一个四点近似矩阵的例子来说明这个概念。

  • 08:35:00 在本节中,演讲者解释了如何使用数据点示例创建邻近矩阵和树状图。邻近矩阵有助于衡量两个点或集群之间的相似性,而树状图显示集群的层次结构。演讲者重点介绍了用于衡量聚类之间相似性的三种方法,即最小值、最大值和组平均值。

  • 08:40:00 在本节中,讲师讨论了层次聚类中合并聚类的两种方法:最小值和最大值。最小方法涉及将两个聚类之间的相似性作为聚类中任意两点之间的最小距离。首先合并距离最小的簇,然后继续该过程,直到所有点都在一个簇中。最大方法类似,但它以两个簇之间的相似性作为簇中任意两点之间的最大距离。讲师提供了一个使用邻近矩阵的示例来说明这些概念。

  • 08:45:00 在本节中,讲师解释了组平均簇间相似性度量的概念,这是另一种簇间相似性度量。他为它提供了一个方程式,并展示了一个树状图来解释它是如何工作的。然后讲师讨论了最小距离度量的缺点,指出它对异常值很敏感,并建议学习者可以参考维基百科页面以进一步了解。他还提供了凝聚聚类的时间和空间复杂度,空间复杂度为 n 阶,时间复杂度为 n 阶 log n 或 n 立方阶。最后,他通过鼓励学习者通过大量项目练习来巩固他们对机器学习的理解来结束本节。

  • 08:50:00 在本节中,演讲者讨论了课程的项目部分,并介绍了将要建立的心力衰竭预测模型。演讲者解释说,该模型将根据年龄、性别、血压、糖尿病和吸烟等各种特征来预测一个人是否会死亡。该项目的数据可在提供的链接中获得,演讲者解释说,该项目的业务目标是构建一个医疗保健 AI 系统,该系统将有助于及早发现健康问题以挽救生命。此外,演讲者提到课程中还将介绍垃圾邮件检测系统项目。演讲者导入必要的库,加载数据,并打印数据的形状。

  • 08:55:00 在本节中,我们将了解探索数据的基础知识,例如检查数据的形状及其信息。使用 info() 方法,我们可以查看是否有空值、数据类型和内存使用情况。我们还可以使用 describe() 方法来深入了解数值数据的统计分布。探索性数据分析 (EDA) 是机器学习的重要步骤,我们在其中对数据提出问题并找到答案以帮助提供业务解决方案。对于这个二元分类问题,我们将检查类的分布,其中“1”表示该人死亡,“0”表示该人还活着。

第 10 部分

  • 09:00:00 在视频的这一部分中,讲师讨论了机器学习中数据不平衡的问题。代码片段显示了数据分布,其中有 203 例存活病例和 96 例死亡病例,这是不平衡的。不平衡数据意味着数据在类之间分布不均,这可能导致模型偏向某些类。讲师解释说,不平衡数据是机器学习中的一个大问题,其中模型可能更倾向于在多数类别上进行训练并更频繁地预测该类别。

  • 09:05:00 在本节中,演讲者解释了平衡数据的概念以及模型如何最好地使用它,因为它更稳健、更公正。然后他们继续展示分析数据的各种方式,例如年龄分布和根据特定条件过滤数据。演讲者演示了一段 python 代码,用于选择年龄在 50 岁以上的行,并查看该人是否死亡。他们使用饼图来可视化数据并回答业务问题,例如死亡案例总数比活着案例少两倍,并且大多数年龄从 40 岁上升到 95 岁。

  • 09:10:00 在本节中,讲师用 Python 复习了一个代码片段,他们在其中计算节食案例和非节食案例的总数。他们发现,在总共 203 例病例中,大多数病例都是饮食病例,但其中超过 50 例年龄在 50 岁以上并且已经死亡。然后,讲师继续解释他们如何根据这些数据回答更多问题,并直观地表示数据以使其更容易理解。最后,讲师检查变量之间的相关性并提供图表来解释相关性的含义。

  • 09:15:00 在本节中,讲师解释了相关性及其从负一到正一的变化范围。接近负一的变量表示非常相似,而接近零的值表示没有线性传输。皮尔逊相关性是一种判断数据是否线性的方法,相关性越接近一个,数据越正相关。讲师谈到完美的相关性以及对角线如何全部为一,这意味着正方形与每个变量本身相关。在讨论数据和理解之后,讲师继续进行数据集开发以及如何将数据划分为训练和测试集以验证模型的最佳效果。讲师提供了一个特征工程示例,该示例使用分类变量添加更多特征并对数据应用转换以插入特征。交互项是将两个特征的乘积相加,讲师展示了如何遍历所有列并将两列相乘。

  • 09:20:00 在本节中,演示者讨论了构建模型的过程并评估了其准确度、精确度、召回率和混淆矩阵。演示者使用一种称为优化算法的算法来缩小具有 10,000 个数据点和十个特征的数据集。他们解释了随机梯度下降的工作原理以及如何使用它来最小化计算时间。此外,他们还解释了关键术语,例如“真阳性”和“阳性类”,这对于理解模型的整体性能很重要。

  • 09:25:00 在本节中,演讲者解释了真阳性、假阳性、真阴性和假阴性的概念,以及如何使用它们创建混淆矩阵,该矩阵显示了正确分类实例的数量模型中的负类。演讲者还讨论了准确率和召回率,它们回答了关于阳性预测的准确性及其实际发生的不同问题。演讲者演示了逻辑回归和支持向量分类器的广泛微调,以及决策树分类器的使用,使用随机搜索进行参数优化。还显示了每个分类器的训练和测试分数。

  • 09:30:00 在视频的这一部分,讲师解释了如何使用从 UCI 存储库下载的数据集构建垃圾邮件和非垃圾邮件检测器系统。数据采用表格格式,教师阅读它并根据选项卡将其分开,标题设置为无,列标记为“标签”和“消息”。目标是将邮件分类为垃圾邮件或非垃圾邮件(非垃圾邮件),并且讲师将逐步完成微调不同模型(例如随机森林分类器和 XGBoost 分类器)的过程以实现此目的。讲师还强调了特征选择的重要性,并展示了如何保存 XGBoost 模型以备将来使用。总的来说,这是一个有趣的项目,展示了如何使用机器学习来解决现实世界的问题。

  • 09:35:00 在视频的这一部分,演示者经历了探索和分析从 UCI 存储库下载的文本消息数据集的过程。目标是建立一个机器学习模型,可以区分垃圾邮件和非垃圾邮件。演示者解释说,文本数据需要转换为数字以便模型使用,他们还演示了如何为此使用文本向量化器。然后他们探索了类别的分布,注意到数据集不平衡,非垃圾邮件多于垃圾邮件。最后,他们解释了清理文本数据的重要性,因为拼写或大写的微小差异会导致错误的分类。

  • 09:40:00 在本节中,讲师解释了文本预处理的过程,包括将所有文本转换为小写,将某些字符(如 0 和 3)替换为有意义的文本等价物,并删除不需要的字符。讲师还建议探索词干提取和词形还原以减少文本中有意义的单词。给出了一个使用 lambda 对每条消息应用文本预处理的示例,然后将其存储在名为“已处理文本”的新列中。

  • 09:45:00 在本节中,演讲者讨论了预处理文本和使用 Porter 词干分析器应用词干提取以减少单词的变形。演讲者还提到了特征工程,其中手被编码为零并通过调用 map 方法扩展为一。然后将训练集转换为词嵌入,使用计数向量化器、tf-idf 向量化器和词袋等技术将词转换为数字。文本被转换为具有存储元素的稀疏矩阵,然后在朴素贝叶斯算法中用于分类。最后,演讲者举例说明了如何通过调用计数向量化器和模型来测试新文本以确定它是否是垃圾邮件。

  • 09:50:00 在视频的这一部分,演讲者演示了如何使用自然语言处理 (NLP) 技术(例如计数向量变换和朴素贝叶斯预测)构建基本的垃圾邮件和非垃圾邮件检测系统。系统将消息作为输入,对其进行预处理,并预测它们是垃圾邮件还是非垃圾邮件。演讲者强调,这只是如何在 NLP 中处理数据的示例,还可以使用其他各种技术。演讲者结束课程并祝贺观众完成课程。
 

面向所有人的机器学习——完整课程



面向所有人的机器学习——完整课程

00:00:00 - 01:00:00 这部分视频讨论了机器学习的基础知识,包括有监督和无监督学习。它还涵盖了可用的不同模型以及如何使用它们。最后,它解释了如何衡量机器学习模型的性能。

01:00:00 - 02:00:00 这部分解释了如何使用机器学习来预测事件的结果。它讨论了线性回归、逻辑回归和支持向量机。它还解释了如何使用网格搜索来训练机器学习模型。

02:00:00 - 03:00:00 这部分涵盖了机器学习的基础知识,包括线性回归和反向传播。它解释了如何使用 TensorFlow 库规范化数据和拟合线性回归模型。

03:00:00 - 03:50:00 该视频介绍了机器学习的概念,包括监督学习和非监督学习。它演示了如何使用线性回归和神经网络进行预测。演示者还解释了如何使用机器学习对数据进行聚类。


第1部分

  • 00:00:00 在此视频中,Kylie Ying 解释了监督和非监督学习模型、它们的工作原理以及如何在 Google Colab 上对其进行编程。

  • 00:05:00 这个由 1 段组成的摘要解释了监督学习,这是一种机器学习,其中计算机被赋予一组输入,并被要求预测给定输入的标签。

  • 00:10:00 监督学习是为输入数据分配标签以训练机器学习模型的过程。然后,该模型将输出对给定输入的预测。无监督学习是使用未标记的数据来了解数据中的模式的过程。在强化学习中,代理在基于奖励和惩罚的交互式环境中进行训练。

  • 00:15:00 该视频讨论了机器学习、它的各种应用以及它可以处理的各种类型的数据。它还涵盖有监督和无监督学习,以及回归。

  • 00:20:00 在此视频中,讲师解释了机器学习的工作原理,以及如何使用它来预测数据集中的结果。讲师还讨论了如何在训练后调整机器学习模型的准确性。

  • 00:25:00 该视频讨论了损失的概念,以及它如何影响机器学习模型的性能。损失是衡量机器学习模型的预测与给定数据集中给定的实际标签的距离。有多种可用的损失函数,每种都有自己的优点和缺点。最后,视频讨论了如何计算和验证机器学习模型的性能。

  • 00:30:00 该视频讨论了如何使用机器学习从数据集中预测类别标签。该数据集包括 10 个特征,每个特征对应一个类。直方图用于直观地比较各类特征的分布。视频最后讨论了如何改进数据。

  • 00:35:00 在此视频中,讲师解释了如何使用机器学习技术来创建训练、验证和测试集。讲师演示了如何缩放数据集以使值更具可比性,然后创建一个函数来转换 x 值。最后,讲师创建一个 2d numpy 数组并调用 hstack 函数将数组并排堆叠。

  • 00:40:00 在此视频中,讲师讨论了可用的不同机器学习模型以及如何在代码中使用它们。讨论的模型包括 k 最近邻、线性回归和神经网络。

  • 00:45:00 在此视频中,讲师 Alan Siegel 回顾了机器学习的基础知识,包括距离函数的使用和最近邻算法的使用。他解释说,在二进制分类中,最近邻算法将使用“k”值来确定哪个点是“正”或“负”标签。他展示了如何将其应用于汽车所有权和生育子女的数据集,展示了最近邻算法如何确定给定数据点的哪个点是“正”或“负”标签。

  • 00:50:00 该视频讨论了如何使用机器学习来预测点的位置。该视频介绍了如何使用 k 最近邻算法查找最近点。该视频还解释了如何使用分类报告来确定标记点的分类。

  • 00:55:00 在此视频中,解释了机器学习模型。该模型的准确率为 82%,准确率为 77%,召回率为 89%。该模型被描述为朴素贝叶斯,这是一个简单的机器学习模型。


第2部分

  • 01:00:00 贝叶斯规则是一个数学公式,用于计算在其他事件已经发生的情况下事件的概率。在此示例中,贝叶斯规则用于计算给定阳性测试的疾病概率。

  • 01:05:00 该视频介绍了机器学习的基础知识,重点是贝叶斯推理。演示者演示了如何将贝叶斯推理应用于分类问题,并讨论了所涉及的各种概率分布。

  • 01:10:00 在此视频中,解释了朴素贝叶斯的规则,并表明在给定一组数据的情况下,特定事件的概率与各个事件的概率之和成正比。

  • 01:15:00 该视频介绍了如何使用机器学习来预测事件的结果,例如在进行足球比赛时是否会下雨,或者今天是哪一天。然后视频继续讨论逻辑回归,这是一种更高级的机器学习技术。该视频展示了如何使用回归线来预测不同结果的可能性。该视频最后演示了如何使用逻辑回归来预测学生是否会通过特定测试。

  • 01:20:00 在此视频中,讲师解释了如何使用线性回归来估计分类器正确的概率。为此,他们首先需要将等式重写为 p 等于 mx 加 b。这个等式可以取负无穷大到无穷大的范围,但必须保持在零和一之间。为了求解 p,他们删除了概率的对数,这给了他们 p 大于一减去概率。

  • 01:25:00 在此视频中,演示者讨论了三种类型的机器学习模型:线性回归、逻辑回归和支持向量机。演示者演示了如何使用每个模型,并提供了如何使用每个模型的示例。

  • 01:30:00 在此视频中,讲师讨论了机器学习的工作原理以及可用的不同类型的算法。他还讨论了如何使用位于边缘线上的数据点来最大化支持向量机 (SVM) 的边缘。

  • 01:35:00 在此视频中,作者讨论了不同的机器学习模型,包括支持向量机 (SVM)、神经网络和逻辑回归。他表明 SVM 是三者中最准确的,神经网络甚至可以比 SVM 更准确。

  • 01:40:00 在机器学习中,神经元是神经网络中表示的基本单位。一个神经元的输入特征乘以一个权重,然后将所有这些相乘输入的总和输入到神经元中。神经元的激活函数根据与其预测相关的误差改变其输入的线性状态。梯度下降算法用于遵循二次函数的斜率朝向较低的误差。

  • 01:45:00 在此视频中,讲师解释了机器学习的工作原理以及如何使用 TensorFlow 对神经网络进行编程。他接着展示了如何创建顺序神经网络以及如何计算与权重有关的损失。

  • 01:50:00 在此视频中,演示者演示了如何将机器学习算法与 TensorFlow 结合使用。首先,他们导入 TensorFlow 并创建一个神经网络模型。接下来,他们设置层的激活,并配置损失和准确性指标。最后,他们使用 100 轮训练和 32 轮验证拆分来训练模型。

  • 01:55:00 在此视频中,作者解释了如何使用网格搜索训练机器学习模型。他还讨论了超参数的重要性以及如何设置它们。


第 3 部分

  • 02:00:00 此视频教程展示了如何使用机器学习进行预测和分类。该视频涵盖了训练机器学习模型、记录模型历史和绘制模型性能的基础知识。

  • 02:05:00 该视频演示了如何使用称为转换的技术为神经网络创建损失最小的模型。该模型的性能类似于使用 SVM 的模型,视频还演示了如何使用网络的输出创建分类报告。

  • 02:10:00 在这个视频中,作者解释了线性回归,以及如何计算残差。残差是预测值与实际数据点之间的距离,用于确定最适合回归线的线。

  • 02:15:00 该视频讨论了线性和独立性的概念,并展示了如何在非线性数据集中违反这些假设。然后继续讨论正态性和同方差性假设,以及如何使用残差图评估这些假设。

  • 02:20:00 平均绝对误差的度量告诉我们平均而言我们的预测与训练集中的实际值相差多远。

  • 02:25:00 均方误差 (MSE) 是衡量预测执行情况的指标,与平均绝对误差密切相关。 RMSE 通过对残差的所有平方和进行计算,用于衡量预测相对于其预期值的执行情况。

  • 02:30:00 这个 1 小时的视频课程涵盖机器学习的基础知识,包括线性回归。该课程涵盖残差主题以及如何使用它们来确定数据集的最佳拟合线。

  • 02:35:00 该视频介绍了机器学习的概念以及如何使用各种库和数据集。然后继续解释如何使用数据框来表示数据以及如何分析数据。

  • 02:40:00 该视频讨论了如何使用机器学习来预测一天中不同时间的自行车数量。它展示了如何创建训练集、验证集和测试集,以及如何使用 numpy.split 函数将数据框分成不同的组。

  • 02:45:00 该视频讨论了如何使用机器学习来解决问题。讲师提供了使用机器学习预测温度的示例,并提供了有关如何计算回归系数和对模型进行评分的信息。

  • 02:50:00 在此视频中,创作者演示了如何使用机器学习来提高线性回归模型在新数据集上的性能。

  • 02:55:00 在此视频中,演示者解释了如何使用 TensorFlow 库在 Python 中构建线性回归模型。他们解释说,在训练模型之前对数据进行归一化是很有帮助的,然后使用反向传播来拟合模型。他们展示了如何绘制模型随时间的损失,以及模型如何收敛到一个很好的拟合。


第 4 部分

  • 03:00:00 该视频以一种人人都可以访问的方式解释了机器学习概念。讲师演示了如何使用神经网络从数据集中预测值,并演示了更改各种参数的效果。

  • 03:05:00 该视频介绍了机器学习的基础知识,包括线性回归的历史以及如何使用神经网络。然后演示者演示了如何计算线性回归和神经网络的均方误差,并比较结果。

  • 03:10:00 在此视频中,讲师解释了监督学习和非监督学习的工作原理。他讨论了如何使用线性回归和神经网络进行预测。

  • 03:15:00 在此视频中,演示者解释了如何使用机器学习将数据分为三个集群。然后他们使用这些信息来计算新的质心并创建新的集群。

  • 03:20:00 本视频讨论了两种类型的机器学习:无监督学习,它在数据中寻找模式;监督学习,它使用训练集来学习如何预测未来的结果。无监督学习技术包括期望最大化和主成分分析,它们通过查找数据的主成分来降低维度。监督学习技术包括线性回归和贝叶斯推理。

  • 03:25:00 机器学习是数据分析领域,有助于对未知数据进行预测。在本课程中,讲师解释了如何使用主成分分析 (PCA) 来降低数据集的维度。这样可以更轻松地可视化和区分数据点。

  • 03:30:00 在此视频中,演示者介绍了线性回归的概念及其在二维 (2D) 数据中的应用。接下来,他们介绍了主成分分析 (PCA) 的概念,这是一种用于将数据集减少到最相关维度的技术。最后,他们讨论了无监督学习在机器学习中的应用。

  • 03:35:00 该视频讨论了如何使用机器学习通过无监督学习进行分类。演示者展示了如何使用 pandas 导入数据,然后将数据相互绘图以查看结果。他们最后讨论了一些数据的外观,并建议可以通过使用不同的分类器来改进聚类。

  • 03:40:00 该视频讲授如何使用机器学习算法对数据进行聚类。

  • 03:45:00 在此视频中,一位机器学习专家讨论了如何应用各种机器学习技术来解决特定问题。该视频还介绍了聚类分析和 PCA。

  • 03:50:00 该视频介绍了机器学习及其各个阶段,包括无监督学习。它还介绍了如何使用 k-means 进行聚类。该视频最后讨论了监督学习及其各个阶段,包括分类和回归。
 

TensorFlow 2.0 速成班


TensorFlow 2.0 速成班

“TensorFlow 2.0 速成课程”视频涵盖了神经网络及其架构的基础知识,重点是图像分类。讲师以蛇游戏和时尚 mnist 数据集为例,通过基于损失函数调整权重和偏差的过程来训练神经网络。该视频展示了数据预处理和使用激活函数(例如 sigmoid 和 ReLU)创建更复杂模型的重要性。演讲者还强调了测试和训练数据的重要性,并演示了如何为模型加载和修改图像数据。最后,演示者展示了如何在 Keras 中定义模型的架构,使用编译和拟合方法对其进行训练,以及使用“model.predict”对特定图像进行预测。

视频教程的第二部分涵盖了创建基本神经网络的各个方面,该神经网络可以对时尚商品进行分类并对电影评论进行情感分析。从加载和准备训练数据开始,本教程继续解释预处理数据和规范化输入序列长度的重要性。然后,本教程介绍了创建合适的模型架构,包括使用不同的层,例如嵌入层和密集层。最后,本教程解释了如何微调超参数、验证模型、保存和加载模型以及评估模型在外部数据上的性能。总体而言,本教程提供了构建更高级神经网络知识的基本结构。它还涵盖了与 TensorFlow 2.0 相关的不同主题,包括为模型编码数据、运行保存的模型进行预测以及在 Ubuntu Linux 上安装 TensorFlow 2.0 GPU 版本。在编码部分,演示者介绍了修剪和清理数据以确保正确的词映射的过程,并创建了一个查找函数来对数据进行编码以进行预测。然后,他们展示了以正确格式准备输入数据以供模型处理的重要性,然后继续介绍在 Linux 系统上安装 TensorFlow 2.0 GPU 版本的教程,建议观众耐心等待,因为涉及的下载量很大.

  • 00:00:00 在本节中,讲师介绍了神经网络的概念及其工作原理。神经网络由相互连接的神经元层组成,类似于我们大脑中神经元的工作方式。这些神经元可以发射也可以不发射,它们之间的联系决定了它们何时发射以及它们可能导致哪些其他神经元发射。神经网络的工作原理是从一层神经元获取输入并将其传递到一个或多个隐藏层,然后再从最后一层产生输出。神经网络的架构可以根据它所要解决的问题类型而有所不同,但一种常见的方法是使用完全连接的神经网络,其中一层中的每个神经元都连接到下一层中的每个神经元。讲师强调理解神经网络背后的数学对于能够创建成功和复杂的神经网络的重要性。

  • 00:05:00 在本节中,讲师解释了神经网络的基础知识以及它们如何解决问题。他使用四个输入和一个输出构建了一个简单的神经网络,该网络经过训练可以让蛇在游戏中保持活力。输入是蛇的前方、左方和右方是否有障碍物,以及推荐的移动方向,有三个不同的值:-1 左,0 直,1 右。当给定一个输入时,神经网络会给出 0 或 1 作为输出,表示是否应遵循推荐的方向。如果它能让蛇活着,它就会遵循推荐的方向,否则,它不会遵循它。

  • 00:10:00 在本节中,演讲者讨论了神经网络的架构及其功能。输入层和输出层通过权重连接,输出由这些值乘以这些权重的加权和确定,同时包含一个偏置值。然后通过输入大量数据并调整偏差和权重来训练网络,以产生准确的输出。如果输出正确,则不进行任何调整,但如果不正确,网络会调整权重和偏差以提高准确性。

  • 00:15:00 在本节中,讲师解释了训练神经网络的过程,其中信息通过网络传递,因此它可以调整权重和偏差以获得更正确的答案。网络从随机权重和偏差开始,并迭代调整它们,直到达到高水平的准确性。然后引入激活函数,即增加网络复杂性的非线性函数。特别是 sigmoid 激活函数被描述为将任何输入值映射到负 1 和 1 之间,允许在特定范围内输出。这给网络带来了更多的复杂性和丰富性。

  • 00:20:00 在本节中,演讲者讨论了激活函数及其在神经网络中的作用。这些函数通过启用非线性函数来提高模型的复杂性,非线性函数更适合逼近真实世界的数据。 Sigmoid 是基本的激活函数之一,它将输出转换为 0 到 1 的范围。最近使用的函数是 Rectified Linear Unit (ReLU),它将负值设置为 0 并使正值更正,从而保持数据0 到正无穷大范围内的点。演讲者还解释说,损失函数对于理解需要如何调整模型中的权重和偏差至关重要。他们计算预测输出与实际输出之间的误差,从而实现更高效的调整和调整。

  • 00:25:00 在本节中,演讲者解释了神经网络的概念以及如何使用隐藏层来创建可以解决难题的更复杂模型。该视频还重点介绍了数据的重要性,以及在将数据发送到阵列之前需要如何对其进行预处理并以正确的形式放置。演讲者使用的是 TensorFlow 的 2.0 教程,但添加了额外的信息,这些信息可能会让那些刚接触神经网络的人感到困惑。本教程使用包含服装项目图像的时尚 mnist 数据集作为图像分类的示例。视频最后向观众展示了如何安装 TensorFlow 2.0 和 matplotlib。

  • 00:30:00 在本节中,视频介绍了要安装的必要软件包,例如用于绘图和显示图像的 tensorflow、keras、numpy 和 matplotlib。该视频还解释了测试数据和训练数据之间的区别,其中大约 90-80% 的数据被传递给网络进行训练,其余数据用于测试准确性并确保网络不是简单地记忆数据。该视频使用 Keras 将数据集拆分为带有标签的训练和测试数据。最后,该视频提供了对标签表示的深入了解,每个图像都分配有一个介于 0 和 9 之间的特定标签。

  • 00:35:00 在本节中,讲师演示了如何为 TensorFlow 2.0 模型加载和修改图像数据。他创建了一个标签名称列表,显示每个标签编号代表什么。然后,他使用 Matplotlib 库显示图像,并解释说它们是 28x28 像素的数组。像素值除以 255 以减小数据大小,使其更易于在模型中使用。由十进制值组成的修改后的数据被加载到模型中,该模型将预测类别,即标签编号,介于 0 和 9 之间。讲师最后提到他将演示如何设置、训练和测试模型下一节。

  • 00:40:00 在 TensorFlow 2.0 速成课程的这一部分,演讲者解释了用于图像分类的神经网络架构。输入是一个具有灰度值的 28x28 像素数组,它被展平成一个 784 像素的列表,以馈入神经网络的输入层。输出层有 10 个神经元,每个神经元代表 10 个类 (0-9) 中的一个。目标是让最活跃的神经元代表预测的类别。演讲者还涵盖了隐藏层,强调两层网络是可能的,但对于更复杂的图像识别任务来说并不理想。

  • 00:45:00 在 TensorFlow 2.0 速成课程的这一部分,讲师解释了神经网络中隐藏层的概念。通过添加一个包含 128 个神经元的隐藏层,该网络可以分析图像并识别可能有助于更好地识别图像的模式。 128 个神经元的选择有些随意,隐藏层的神经元数量取决于应用。然后,讲师继续在 Keras 中为模型定义架构或层。该架构包括一个扁平的输入层、两个密集或完全连接的层,以及一个具有 10 个神经元和 softmax 激活的输出层,以给出网络识别特定类别的概率。

  • 00:50:00 在本节中,视频解释了为模型设置参数并使用 TensorFlow 2.0 中的“编译”和“拟合”方法对其进行训练的过程。这包括在设置训练轮数之前定义要在编译模型中使用的优化器、损失函数和指标。该视频还简单解释了什么是历元以及它们如何影响模型的准确性。运行文件后,评估模型的测试精度,结果为87,略低于训练精度。

  • 00:55:00 在本节中,演示者演示了如何使用模型对特定图像进行预测。他解释说,您需要使用“model.predict”方法并传入包含图像输入形状的列表或 np 数组。然后该方法将为您提供一组预测,因为它希望您传入一堆不同的东西并使用模型预测所有这些东西。输出是一系列不同的列表,每个列表都包含模型对特定图像的预测。演示者指出,教程视频中有时会忽略此功能,但了解如何实际使用该模型很重要。
  • 01:00:00 在本节中,演讲者展示了如何使用 np.argmax() 函数来解释和验证网络预测,该函数可以找到列表中最高数字的索引。他们获取此函数的值并将其传递给类名以获取预测类的实际名称。演讲者继续设置一个基本的 for 循环来显示测试图像中的多个图像,并显示每个图像的相应预测。他们展示了如何使用它来验证模型是否准确预测,以及预测相对于显示的输入图像是否有意义。最后,演讲者指出了对他遇到的错误的快速修复。

  • 01:05:00 在本节中,视频教程演示了如何使用 TensorFlow 2.0 创建一个可以对时尚物品(例如衬衫或 T 恤)进行分类的简单模型。本教程将介绍多幅图像的预测过程以及如何预测一幅图像。该模型基于一个简单的分类问题,旨在提供基本神经网络的概述。在未来的视频中,内容将变得更加高级,并涵盖真实数据的问题。虽然本教程中使用的数据很简单,但加载和预处理大型数据集可能具有挑战性,需要进行调整才能使其可用。但是,本教程提供了一个易于遵循的结构,为构建神经网络知识提供了坚实的基础。

  • 01:10:00 在本节中,教程作者解释了如何加载数据并通过将数据拆分为训练集和测试集来为训练做准备。他们介绍了整数编码词的概念以及它们如何表示电影评论。然后作者解释说这些数字对应于某些单词,并展示了如何将这些整数映射回它们各自的单词。他们还演示了单词索引的创建,该索引为数据集中的每个单词分配了一个唯一的整数。最后,他们向单词索引添加了特殊的键,并解释了它们将如何在教程的后面部分中使用。

  • 01:15:00 在本节中,演讲者正在解释为训练和测试数据集中的填充词、起始词、未知词和未使用词分配值给它们各自的键的过程。他们添加了一个 pad 标签,通过在列表的末尾添加 padding words 使整个电影评论具有相同的长度,从而使所有电影评论集具有相同的长度。为了创建一个允许整数指向一个词而不是相反的字典,反向词索引列表用于反转键中的值来实现这一点。最后,演讲者解释了使用连接的空白字符串和反向单词索引将训练和测试数据解码为人类可读单词的功能。

  • 01:20:00 本节讲解如何通过padding标签来标识review的长度,对所有的review进行归一化或设置一定的长度。导师解释说,输入神经元的长度是不可能确定的,因为数据集可以有不同的长度,所以使用了一个padding标签来解决这个限制。导师演示了如何使用预处理和序列等Tensorflow功能将序列填充到特定长度或将所有序列归一化到用户定义的长度。最后,导师对整个部分进行了回顾,并强调了用于加载、编码、解码和预处理数据的不同机制。

  • 01:25:00 本节视频导师继续对数据进行预处理,最终确定为模型可以接受的一致形式。检查数据的一致性后,视频继续定义模型架构。讲师解释了各种层的使用,例如嵌入、一维全局平均池化和具有不同激活函数的密集层。他们还讨论了模型输出如何是单个神经元,其值介于 0 和 1 之间,表示评论是正面还是负面的概率。视频最后讨论了词嵌入的重要性以及它们如何帮助理解模型的架构。

  • 01:30:00 在本节中,演讲者讨论了词向量的概念以及嵌入层如何帮助将具有相似含义的词组合在一起。嵌入层为输入数据中的每个词或整数编码项生成词向量,这些词向量本质上是 16 维空间中的系数。最初,该层为每个术语创建 10,000 个词向量并将它们随机分组。然后,该层通过查看向量之间的角度来确定向量之间的相似性,并尝试将相似的单词分组到彼此更接近的位置。这个过程帮助计算机理解单词的含义和上下文,这对于将电影评论准确分类为正面或负面至关重要。

  • 01:35:00 在本节中,视频解释了如何使用神经网络中的嵌入层根据上下文(而不仅仅是内容)将相似的词分组在一起。通过查看特定单词周围的单词,神经网络可以确定哪些单词彼此相关,并将它们组合在嵌入层中。然后使用全局平均池化层缩小该层的输出,将数据置于较低维度,以便更容易计算和训练网络。该视频提供了网络在输入数据通过嵌入层和神经网络中的后续层后的外观图。

  • 01:40:00 在本节中,视频介绍了在用于情感分析的神经网络中创建用于模式识别的致密层。神经网络获取表示不同单词的单词向量,将它们取平均,然后将它们传递给具有 16 个神经元的密集层。密集层寻找单词的模式并尝试使用 sigmoid 函数输出 0 和 1 之间的值来对正面或负面评论进行分类。然后使用优化器、损失函数和二进制交叉熵编译模型以计算预测值和实际值之间的差异。数据分为验证集和训练集,以在测试期间准确衡量模型在新数据上的性能。

  • 01:45:00 在本节中,演示者将测试数据修改为验证数据,这是将用于验证模型的训练数据的子集。他解释说,超参数在机器学习和神经网络中很重要,用户需要微调各个参数以获得准确的结果。他还解释了 batch size 的概念,它指定一次加载多少电影评论,并将其设置为 512。最后,他将模型与数据进行拟合并在测试数据上进行评估,结果显示准确度为87%。演示者强调了验证数据的重要性,并解释了有时模型对新数据的准确性可能较低。

  • 01:50:00 在视频的这一部分,演讲者解释了如何在 TensorFlow 中保存和加载模型以避免每次进行预测时都必须重新训练模型,这对于可能需要数天的大型模型来说尤其不方便,几周,甚至几个月的训练。在增加模型的词汇量后,演讲者展示了如何使用“model.save()”函数保存模型,并为其命名,扩展名为“.h5”,这是 TensorFlow 中用于保存模型的扩展名和凯拉斯。在未来的视频中,演讲者计划讨论检查点模型和批量加载不同数据大小的模型。

  • 01:55:00 在本节中,演讲者解释了如何在 TensorFlow 2.0 中保存和加载模型。该模型可以保存为二进制数据,这在进行预测时节省了时间,因为模型不需要每次都重新训练。要加载模型,需要添加一行代码和文件名。然后,演讲者演示了如何通过在代码中打开文本文件并预处理数据以将其提供给模型来在外部数据上测试模型。请务必注意,文本文件的大小最多应为 250 个单词以匹配训练数据。预处理包括删除不需要的字符,例如逗号和括号。
  • 02:00:00 在本节中,视频创作者讨论了将数据编码和修剪到 250 个单词以便在模型中用于预测的过程。需要删除句点、引号和括号等符号,以确保正确的单词映射。创建一个函数来查找数据中所有单词的映射并返回一个编码列表。一旦数据被编码,模型就被用来进行预测,原始文本、编码评论和预测被打印出来。最后,定义了一个 review_in_code 函数,将字符串数据转换为编码列表。

  • 02:05:00 在视频的这一部分中,演示者运行保存的模型并由于代码编码问题遇到错误。解决问题后,演示者演示了如何将评论翻译成网络可以理解的格式,通过使用 88,000 个单词的词汇表为评论中的每个单词分配相应的索引。生成的输出准确地将评论识别为正面,强调了处理输入数据以确保其格式正确以供网络处理的重要性。然后视频转到在 Ubuntu Linux 系统上安装 TensorFlow 2.0 GPU 版本的教程,并说明如何安装 CUDA 和 cuDNN 以实现 GPU 加速。
     
  • 02:10:00 在本节中,演讲者将指导观众使用 GPU 版本在他们的计算机上安装 TensorFlow 2.0。它们提供了安装 NVIDIA 软件包的分步指南,包括正确的驱动程序和 TensorFlow 2.0 框架本身。发言人指出,虽然该过程相对简单,但由于所涉及的下载量大,可能需要一些时间才能完成。他们还建议遇到 GPU 使用问题的观众卸载 CPU 版本的 TensorFlow,并咨询评论部分以获得进一步帮助。
 

用于机器学习的 Python TensorFlow——神经网络文本分类教程



用于机器学习的 Python TensorFlow——神经网络文本分类教程

在此 YouTube 教程中,演示者涵盖了与用于机器学习和神经网络文本分类的 Python TensorFlow 相关的一系列主题。他们首先讨论了 Google Colab 中的设置过程和必要库的导入,然后重点关注 Wine Reviews 数据集并使用 Matplotlib 绘制各种特征的直方图。本教程涵盖机器学习概念,包括监督学习、定性和定量数据之间的差异,以及二分类和多分类等分类场景中的输入和预测。涵盖的其他主题包括损失函数、神经网络、激活函数、梯度下降和反向传播,以及神经网络在 TensorFlow 中的实现。最后,演示者使用 TensorFlow 实现了一个用于文本分类的神经网络,展示了使用包和库提高效率的好处。

视频教程的第二部分涵盖了使用 Python 中的 TensorFlow 进行机器学习的各个方面,特别侧重于神经网络文本分类。本教程涵盖将数据拆分为训练集和测试集、使用 TensorFlow 和 Keras 创建简单模型、缩放和平衡数据集、使用递归神经网络以及使用 TensorFlow Hub 进行文本分类。本教程强调了评估模型准确性的重要性以及各种神经网络组件的使用,例如激活函数、丢失层和不同类型的单元格。本教程最后总结了关键要点,包括构建神经网络、使用 TensorFlow 进行文本分类以及处理数值数据。

  • 00:00:00 在视频的这一部分,Kylie Ying 首先向观众展示了如何在 Google Colab 中设置新笔记本并导入必要的库,例如 NumPy、Pandas、Matplotlib、TensorFlow 和 TensorFlow Hub。导入这些库后,她将名为“Wine Reviews”的数据集作为 CSV 文件上传,并将其作为 Pandas DataFrame 读取,选择她有兴趣分析的列,例如国家/地区、描述、积分和价格。她决定重点分析描述和分数列之间的关系,看看是否可以训练神经网络模型来对葡萄酒评论是在分数范围的较低端还是较高端进行分类。

  • 00:05:00 在视频的这一部分,演讲者讨论了如何删除 pandas 数据框中的列并使用 Matplotlib 绘制直方图。他们绘制点数列以查看值的分布,并决定将评论分为 90 以下和 90 以上。演讲者还简要解释了机器学习,包括人工智能、机器学习和数据科学之间的区别,以及机器学习是人工智能的一个子集,专注于使用数据解决特定问题。人工智能、机器学习和数据科学领域相互重叠,可能会使用机器学习技术来分析数据并从中汲取见解。

  • 00:10:00 在本节中,演讲者介绍了三种不同类型的机器学习:监督学习、非监督学习和强化学习。本教程侧重于监督学习,其中输入具有相应的输出标签并用于训练模型以学习输出。演讲者解释说,机器学习模型学习数据中的模式以得出预测,并且输入列表称为特征向量。演讲者还讨论了两种不同类型的定性数据输入:分类和有限数量的类别或组。本教程的重点是使用带标签的输入和输出对来进行未来预测。

  • 00:15:00 在本节中,视频介绍了定性和定量特征的概念,以及如何将它们编码为计算机的数字。定性特征,例如国籍或年龄组,是那些没有与之关联的数字的特征,可以使用单热编码对它们进行编码。数字特征,例如桌子的大小或火的温度,是定量的,可以是连续的也可以是离散的。该视频还区分了没有固有顺序的标称数据和具有固有顺序的有序数据,并讨论了不同类型的定性特征可能需要不同的编码技术。

  • 00:20:00 在本节中,演讲者解释了监督学习中不同类型的输入和预测。输入可以是连续的或离散的,而预测可以分为二类或多类。对于二元分类,模型预测输入是否属于两个类别之一,而多类分类涉及将输入映射到多个类别之一。此外,回归用于预测连续值。演讲者然后取笑模型的话题,但还没有进入细节。最后,演讲者简要介绍了如何让模型学习和评估其性能。

  • 00:25:00 在本节中,演讲者讨论了他们将用于真实世界示例的数据集,并解释了数据的结构。该数据集包含有关个人的信息,包括怀孕次数、血糖水平和血压等定量变量,以及表明他们是否患有糖尿病的结果变量。每一行代表一个不同的个体,每一列代表一个可以输入模型的不同特征。特征向量是插入模型的内容,该特征向量的目标是要预测的输出。演讲者继续解释说,数据集分为训练数据集、验证数据集和测试数据集,验证数据集用于检查模型是否可以在模型运行前处理看不见的数据。在测试数据集上测试。

  • 00:30:00 在本节中,演讲者讨论了损失函数以及它们如何量化回归和二元分类场景中预测值和实际值之间的差异。在回归中,L1 损失函数找到预测值和实际值之间的差异,而 L2 损失函数对差异进行平方。在二元分类中,二元交叉熵损失找到属于特定类别的预测概率和实际概率之间的差异。演讲者还解释了准确性是分类场景中性能的衡量标准。最后,演讲者介绍了模型的概念以及它如何适应整个机器学习过程。

  • 00:35:00 在本节中,演讲者讨论了神经网络,指出它们因其用于分类和回归的能力而广受欢迎。然而,演讲者还提到,神经网络有时会被过度使用,将它们用于简单模型可能是不必要的。演讲者讨论了神经网络为何是一个黑匣子,因此有时缺乏透明度。他们解释了神经网络的结构,包括特征如何乘以权重并在通过激活函数之前添加到偏差中。演讲者强调了使用非线性激活函数防止神经网络变成简单线性回归的重要性。

  • 00:40:00 在本节中,视频讨论了激活函数及其在神经网络中的作用。如果一个神经网络仅仅使用一个线性函数,它就达不到它的目的。 sigmoid、tange 和 relu 等激活函数允许将每个神经元投射到非线性空间中,从而实现训练过程。然后视频解释了梯度下降和反向传播的概念,它们是神经网络起作用的原因。梯度下降测量损失函数的斜率,反向传播调整权重值以最小化损失。通过这个过程,为每个参数设置一个新的权重值,也就是旧的权重加上一些alpha。

  • 00:45:00 在本节中,视频讨论了使用已经开发和优化的 TensorFlow 等库在机器学习中实现神经网络。 TensorFlow 库是一个开源库,可帮助开发和训练机器学习模型。该库包含许多模块,包括 Keras,它包含帮助用户创建和优化模型的模块,例如不同的优化器。该视频还解释了为什么使用已建立的库比从头开始编码神经网络更有好处。

  • 00:50:00 在本节中,演示者向观众展示了如何使用 TensorFlow 实现神经网络进行文本分类。他们首先介绍了使用包和库来提高效率的好处,然后开始创建一个新的笔记本,他们在其中使用读取 csv 函数加载了一个名为 diabetes.csv 的数据集。该数据集来自国家糖尿病、消化和肾脏疾病研究所,包括各种特征和患者人口统计数据以及患者是否患有糖尿病的分类。然后,演示者演示了如何通过绘制各种特征的直方图来可视化数据,并使用 Jupyter Notebook 中的 for 循环根据患者是否患有糖尿病进行索引。

  • 00:55:00 在关于使用 Python TensorFlow 进行机器学习和神经网络文本分类的视频教程的这一部分中,演示者创建了一个结果设置为零的新数据框和另一个结果设置为 1 的数据框,以区分糖尿病患者和那些没有。下一步涉及可视化糖尿病阳性和阴性患者的数量,这似乎没有定论,因为不同值之间没有可分离的模式。这突出了机器学习通过综合考虑所有特征来预测糖尿病的重要性。最后,演示者将数据帧拆分为 x 和 y 值以供进一步分析。
  • 01:00:00 在本节中,演讲者解释了如何使用 Scikit-learn 模块将数据拆分为训练集和测试集。 speaker导入模块,调用train_test_split函数,传入输入输出特征。测试大小设置为 20%,而训练大小设置为数据集的 60%。然后使用临时集使用 50/50 拆分创建验证集和测试集。最后,演讲者使用 TensorFlow 和 Keras 构建了一个简单的模型,特别是具有 16 个神经元的密集层与前一层紧密相连。

  • 01:05:00 在本节中,演讲者解释了在 Python 中使用 TensorFlow 创建二元分类神经网络的过程。他们添加了层和一个称为 sigmoid 的激活函数,该函数将输入映射到某事物是否属于单个类的概率。然后使用称为“adam”的优化器、称为“二元交叉熵”的损失函数和准确性度量来编译该模型。在训练模型之前,他们会评估其在训练和验证数据上的性能,这会产生较低的准确性。最后,说话者使用“model.fit”函数训练模型,传入训练和验证数据、批量大小和轮数。

  • 01:10:00 在本节中,演示者讨论了缩放数据集特征以确保它们处于更标准化范围内的必要性。演示者解释了如何导入必要的包以使用 sklearn 预处理和标准标量来缩放功能。缩放特征后,演示者检查值的范围并绘制转换后的数据框以证明大多数特征现在处于相似的比例。缩放特征有助于确保特征不会因范围不同而影响神经网络的结果。

  • 01:15:00 在本节中,视频教程重点介绍通过称为随机过采样的过程对数据集进行归一化和平衡。通过可视化数据,讲师演示了糖尿病患者和非糖尿病患者的数据集如何高度不平衡,从而导致神经网络可能无法很好地训练。通过使用随机过采样器,更多的随机样本被添加到数据集中,平衡了两个类别的长度。这是通过导入另一个名为 Imbalance learn dot over sampling 的包来实现的,其中包括一个 Random Over Sampler。使用 fit_resample 函数再次拆分数据集,使两个结果近似等于 1。重新运行单元格后,模型的准确率接近 50%,表明平衡数据集导致更好的模型性能。

  • 01:20:00 在本节中,创建者在测试数据集上评估了神经网络模型,并获得了 77.5% 的准确率,表明该模型成功地泛化到未见数据。然后本教程继续讨论递归神经网络 (RNN) 以及它们如何对涉及序列或序列的数据有用。 RNN 允许在神经网络中创建记忆,允许它记住来自先前时间步长的信息。然而,使用 RNN 可能会导致反向传播过程中出现梯度爆炸或梯度消失等问题。

  • 01:25:00 在本节中,演讲者讨论了梯度越来越接近零的问题,这阻碍了模型的更新和学习。为了解决这个问题,可以使用不同类型的细胞或神经元,例如门控循环单元和长短期记忆单元。然后,演讲者继续使用葡萄酒评论进行文本分类的 TensorFlow 示例,并演示如何将数据拆分为训练、验证和测试数据集。演讲者使用 numpy 的 split 函数展示了一种不同的数据拆分方式,并强调了在处理数据集时保持灵活性的重要性。

  • 01:30:00 在本节中,视频教程介绍了如何将数据集拆分为训练集、验证集和测试集,以及如何将它们转换为 TensorFlow 中的 tf.data.Dataset 对象。由于数据集较大,指导老师使用了较大的batch size和tf.data.autotune,并且调整函数代码将目标变量更改为“标签”,因为数据已经被标记。本教程还解释了 TensorFlow hub 的工作原理,它在本教程中用于文本分类。该视频还演示了如何可视化 TensorFlow 数据集对象中的数据集。

  • 01:35:00 在本节中,视频教程讨论了如何使用 TensorFlow Hub(一个预训练机器学习模型的存储库)来帮助进行文本分类。视频解释了计算机不理解文本,因此需要将文本转换为计算机可以理解的数字。为了进行这种转换,该视频使用了 nnlm,这是一种在英语 Google 新闻上训练的基于标记的文本嵌入,并将所有文本转换为数字向量。然后,该视频展示了如何使用具有密集层、ReLU 激活函数和二元分类输出的 TensorFlow Keras 构建神经网络模型。该视频编译模型并在训练和验证数据上对其进行评估,显示准确率约为 40%。

  • 01:40:00 在视频的这一部分中,演讲者训练机器学习模型并观察结果。训练准确率增加,损失减少,表明模型训练良好。然而,验证准确率停滞不前,甚至略有下降,表明该模型泛化能力不佳并且过度拟合。为了解决这个问题,演讲者建议添加 dropout 层,在每次训练迭代期间随机选择几个节点“关闭”。这在模型中引入了更多的随机性和可变性,帮助它更好地泛化。最后,说话者重复 hub 层并编译模型。

  • 01:45:00 在本节中,用户评估在上一节中创建和训练的神经网络。损失在减少,准确度在增加,但用户仅在五个 epoch 后就提前停止了训练。该模型在测试数据上进行评估,准确率约为 83%。然后,用户展示如何使用 LSTM 重新创建模型,并首先创建一个最大标记设置为 2000 的编码器。然后使用编码器和一个嵌入层定义模型,其中输入维度设置为编码器词汇表的长度并将输出维度设置为 32。最后,添加一个具有 32 个节点的 LSTM 层。

  • 01:50:00 在视频的这一部分中,讲师通过添加密集层和丢弃层来构建神经网络以防止过度拟合。输出的激活函数是 sigmoid,而输入需要一个分词器。发现模型的准确度约为 53,损失约为 0.7。然后,通过评估训练和验证数据来训练模型。训练结束时,发现测试数据的准确率是84。教程以讲师总结的要点结束,即学习如何构建前馈神经网络,使用TensorFlow进行文本分类,并实现数值数据。
 

TensorFlow 2.0 完整课程 - Python 神经网络初学者教程(第 1-4 部分)



TensorFlow 2.0 完整课程 - Python 神经网络入门教程

00:00:00 - 01:00:00 该视频介绍了 TensorFlow 2.0,这是一个用于数据处理和机器学习的库。讲师解释什么是张量以及如何使用张量存储部分定义的计算。他还演示了如何使用 TF dot rank 和 TF dot reshape 函数来控制张量中的维数。

01:00:00 - 02:00:00 该视频教程介绍了如何使用线性回归来预测数据集中的值。以泰坦尼克号数据集为例。演示者解释了如何使用线性回归来预测数据集中的值以及如何使用 TensorFlow 在数据集中创建特征列。

02:00:00 - 03:00:00 本视频教程涵盖了使用 Python 构建神经网络的基础知识。该视频首先描述了神经网络如何由相互连接的神经元层组成。然后,该视频介绍了如何创建随机数生成器以及如何训练神经网络。最后,视频展示了如何连接神经元和权重,如何通过网络传递信息,以及如何计算一个神经元的输出值。

03:00:00 - 04:00:00 该视频介绍了如何使用 TensorFlow 构建用于图像识别的卷积神经网络。该视频涵盖了卷积神经网络的基础知识,包括它们的工作原理以及如何使用预训练模型。

04:00:00 - 05:00:00 该视频介绍了如何使用 TensorFlow 训练可以预测图像类别的机器学习模型。该视频涵盖了深度学习和卷积神经网络等基本概念。

05:00:00 - 06:00:00 该视频是使用 TensorFlow 2.0 训练神经网络的完整指南。它涵盖了神经网络的输入和输出形状、如何创建损失函数以及如何使用模型来预测序列。该视频还演示了如何使用 TensorFlow 生成文本。

06:00:00 - 06:50:00 本视频教程介绍了强大的机器学习库 TensorFlow 2.0 的基础知识。在介绍了 TensorFlow 及其关键概念之后,本教程将引导观众完成一系列关于深度学习和强化学习等不同机器学习任务的教程。


第1部分

  • 00:00:00 该视频教程教初学者如何在 Python 中使用 TensorFlow 2.0 构建神经网络。讲师解释了人工智能、神经网络和机器学习之间的区别,并提供了课程资源,包括实践练习和代码示例。

  • 00:05:00 机器学习是人工智能的一个子领域,它允许计算机为自己生成规则,而无需明确编程。

  • 00:10:00 该视频解释了神经网络和深度学习的基础知识,以及这些系统如何通过多层转换数据来工作。神经网络可用于各种任务,包括机器学习和人工智能。该视频还提供了学生成绩的示例数据集。

  • 00:15:00 本视频讨论了人工智能、机器学习和神经网络之间的区别,然后继续讨论了监督学习。

  • 00:20:00 当我们没有任何输入数据时,使用无监督机器学习。它用于找出相似的数据点组。

  • 00:25:00 该视频概述了三种不同类型的机器学习:监督学习、非监督学习和强化学习。最后一种类型,即强化学习,将通过一个人工智能 (AI) 代理试图达到特定目标的游戏示例进行更详细的解释。

  • 00:30:00 在此视频中,对 TensorFlow 进行了基本介绍,然后讨论了该库在较低级别上的工作方式。然后更详细地讨论 TensorFlow,包括两个主要组件:图形和会话。图是相互关联的部分计算的集合,会话是执行部分或整个图的一种方式。

  • 00:35:00 在此视频中,讲师介绍了 TensorFlow 的基础知识,包括图形和会话的概念。然后,他演示了如何使用 Google Collaboratory 创建和执行代码块,以及导入和使用各种模块。最后,他讨论了在资源有限的计算机上使用 TensorFlow 的好处。

  • 00:40:00 在此视频中,讲师演示了如何将 TensorFlow 2.0 与 Python 神经网络一起导入和使用。 TensorFlow 是一个用于数据操作和机器学习的库。 TensorFlow 2.0 是改进性能的新版本库。讲师还解释了张量是什么以及它如何概括向量和矩阵。

  • 00:45:00 TensorFlow 2.0 引入了张量,张量是存储部分定义的计算的重要对象。张量有数据类型和形状,每个张量都有等级和度数。要确定张量的秩,请使用 TF 点秩方法。

  • 00:50:00 在此视频中,作者介绍了张量形状的概念,并解释了如何使用它们来识别张量中元素的数量。他还介绍了张量秩的概念,并展示了如何使用它来控制张量中的维数。最后,他演示了如何使用 TF 点重塑函数将数据向量重塑为不同的形状。

  • 00:55:00 该视频教授张量的基础知识,包括它们的不同类型、如何创建和评估张量,以及如何重塑它们。


第2部分

  • 01:00:00 该视频介绍了线性回归的基本概念,线性回归是一种机器学习算法,用于根据过去的数据预测未来的值。当数据点以线性方式相关时,使用线性回归。

  • 01:05:00 在本教程中,您将学习如何使用线性回归通过最佳拟合线预测新数据点。

  • 01:10:00 在此视频中,演示者解释了如何使用线性回归来预测数据集中的值。他们首先解释线性回归如何在三个维度上工作,然后展示如何在 TensorFlow 中对其进行编码。

  • 01:15:00 视频介绍了泰坦尼克号数据集,并解释了为什么线性回归是预测船上幸存者的好算法。数据集被加载到 pandas 和 Excel 中。

  • 01:20:00 该视频介绍了如何使用数据框存储数据以及如何使用点运算符在数据框内查找特定值。

  • 01:25:00 在此视频中,讲师解释了张量的基础知识以及它们如何用于机器学习。然后,他展示了如何使用训练数据集和测试数据集创建模型。

  • 01:30:00 在此视频中,作者解释了如何使用 TensorFlow 在数据集中创建特征列。这些列将用于训练线性估计器或模型。

  • 01:35:00 在此视频中,讲师解释了如何在 TensorFlow 模型中创建特征列和数字列,以及如何使用批处理训练模型。

  • 01:40:00 TF 2.0 完整课程介绍了如何使用 Python 创建神经网络,以及如何训练和评估网络。视频教程展示了如何创建输入函数以及如何使用该函数创建熊猫数据集的图像。

  • 01:45:00 这个 1 段摘要解释了如何使用 TensorFlow 模型对数据集进行预测。首先,您使用估算器模块中的语法创建模型。接下来,您使用线性分类器对象训练模型。最后,您评估模型并打印出准确性。

  • 01:50:00 该视频介绍了如何使用 TensorFlow 创建用于预测结果的神经网络,包括如何遍历预测并访问实际值。

  • 01:55:00 在本教程中,作者展示了如何使用 TensorFlow 训练神经网络以根据数据集预测花的种类。作者还解释了不同类型的神经网络以及如何使用输入函数来优化它们的性能。


第 3 部分

  • 02:00:00 在此视频中,作者介绍了在 TensorFlow 2.0 中创建神经网络的过程,并解释了可用的不同模型。然后,他们展示了如何构建神经网络并使用 dnn 分类器对其进行训练。

  • 02:05:00 在此视频中,为神经网络创建了训练和评估函数。 lambda 用于在一行中定义函数。然后使用该函数来训练神经网络。显示经过训练的神经网络的准确性。

  • 02:10:00 该视频展示了如何使用 TensorFlow 的预测功能来预测花朵的类别。用户首先输入花的特征,例如萼片长度、花瓣长度和宽度。然后,他们创建一个预测字典并为其提供特征。 TensorFlow 然后根据输入的特征预测花的类别。最后,用户打印出预测和预测的概率。

  • 02:15:00 该视频介绍了神经网络的基础知识,包括分类和聚类。

  • 02:20:00 该视频讨论了如何使用 Python 神经网络对数据点进行聚类。在标记所有数据点后,视频解释了如何找到所有集群之间最近的质心以及如何将数据点重新分配到最近的集群。

  • 02:25:00 在此视频中,讲师介绍了神经网络和隐马尔可夫模型的基础知识。他首先讨论了机器学习中使用的数据类型,例如 k-means 和线性回归。然后他讨论了一个基本的天气模型,以及如何创建一个隐马尔可夫模型来预测任何一天的天气。

  • 02:30:00 在此视频教程中,演示者介绍了 TensorFlow 的基础知识,包括它在神经网络中的用法。然后,他继续演示如何使用两种状态和两种概率分布在 TensorFlow 中创建基本天气模型。然后演示者演示如何使用该模型预测下周的温度。

  • 02:35:00 该视频演示了如何使用 TensorFlow 创建神经网络来预测给定序列的每一天的平均温度。该视频介绍了如何导入必要的模块并创建模型。该模型正确预测了序列第一天的平均温度,但预测了随后几天的错误温度。解决问题后,视频演示了如何使用不同的 TensorFlow 模块成功预测序列中每一天的平均温度。

  • 02:40:00 该视频介绍了如何使用 Mean 命令在 TensorFlow 2.0 中运行模型。这是一个有用的命令,用于比较模型中变量的预期值。

  • 02:45:00 在本模块中,讲师将讨论神经网络及其工作原理,并解释神经网络如何由层组成。他还将讨论输入层如何接收原始数据以及神经网络如何能够对这些数据进行分类。

  • 02:50:00 《TensorFlow 2.0 完整课程 - Python 神经网络初学者教程》提供了在 Python 中创建基本神经网络的分步指南。第一层是输入神经元,然后是隐藏层,然后是输出层。输出层的每条输入信息都有一个神经元,隐藏层中的神经元相互连接并连接到输出层。隐藏层连接到输入层和输出层,称为密集连接的神经网络。

  • 02:55:00 本视频教程演示了如何将 Python 用于神经网络,展示了如何创建随机数生成器和训练神经网络。该视频还介绍了如何连接神经元和权重、如何通过网络传递信息以及如何计算神经元的输出值。


第 4 部分

  • 03:00:00 在此视频中,借助激活函数解释了 Python 神经网络。此函数压缩/平方负数和正数,使网络更容易识别红色和蓝色。

  • 03:05:00 在此视频中,作者解释了激活函数的概念及其如何影响神经网络的输出。他还解释了如何使用激活函数将复杂性引入网络。然后作者继续讨论用于训练神经网络的损失函数。

  • 03:10:00 本视频介绍了神经网络的概念,并描述了神经网络训练中使用的三个主要损失函数:均方误差、平均绝对误差和铰链损失。然后继续解释梯度下降,这是用于优化神经网络性能的算法。

  • 03:15:00 本视频教程介绍了 TensorFlow 的基础知识,包括如何创建和训练神经网络。该视频还介绍了神经网络优化算法的使用,并解释了如何评估神经网络的性能。

  • 03:20:00 在此视频中,讲师演示了如何使用 TensorFlow 在 Python 中训练神经网络。演示中使用的数据集包括不同类型服装的图像,讲师展示了如何使用 TensorFlow 中的训练和测试功能来验证网络的预测。

  • 03:25:00 在此视频中,讲师介绍了神经网络的基础知识,包括神经网络中的层和节点,以及用于确定神经元输出值的激活函数。讲师还介绍了如何在 TensorFlow 中创建模型以及如何运行模型。

  • 03:30:00 在这个 1 小时的视频教程中,创作者介绍了 TensorFlow 的基础知识,包括神经网络的架构和功能。然后他们继续展示如何编译和拟合神经网络,并最终在训练集上对其进行训练。解释了过度拟合,并将训练模型的准确性与测试集的准确性进行了比较。

  • 03:35:00 在此视频中,讲师解释了神经网络如何过度拟合以及如何通过调整超参数来提高泛化能力。然后,他演示了如何使用来自神经网络的预测对象对测试图像进行预测。

  • 03:40:00 本视频教程教授如何使用 TensorFlow 构建用于深度计算机视觉的卷积神经网络。该视频介绍了卷积神经网络是什么、它是如何工作的以及如何使用预训练模型。

  • 03:45:00 视频解释了密集神经网络和卷积神经网络之间的区别,并解释了卷积神经网络学习局部模式而不是全局模式。

  • 03:50:00 卷积神经网络 (CNN) 是一种机器学习算法,用于分析和理解图像。卷积神经网络由许多不同的层组成,用于分析和理解图像。第一层用于识别图像中特定过滤器的存在。

  • 03:55:00 在此视频中,讲师解释了如何使用叉积在图像中查找过滤器。过滤器是根据图像和过滤器之间的像素值的相似程度来确定的。
 

TensorFlow 2.0 完整课程 - Python 神经网络初学者教程(第 5-7 部分)



TensorFlow 2.0 完整课程 - Python 神经网络入门教程


第 5 部分

  • 04:00:00 该视频讨论了卷积神经网络的工作原理以及填充和步幅如何帮助使网络更易于使用。

  • 04:05:00 在此视频中,讲师解释了如何使用最小和最大等池化操作来降低特征图的维度。然后,他通过展示如何从特征图中采样值并生成降维特征图来演示这是如何完成的。接下来,讲师展示了如何使用二乘二的池化操作将特征图的大小减少一半。然后,他演示了如何使用最大池化操作来查找区域中的特征。然后,他演示了如何使用平均池化操作来查找区域中的要素。最后,讲师展示了如何使用 Kerris 创建卷积神经网络。

  • 04:10:00 在此视频教程中,讲师演示了如何使用 Python 创建卷积神经网络 (CNN)。 CNN 的第一层是最大池化层,用于降低输入数据的维度。接下来的两层是卷积层和最大池化层。最后一层是对输入数据进行分类的密集层。

  • 04:15:00 该视频介绍了如何使用数据增强来提高机器学习模型的性能。数据增强涉及修改图像以使其与训练数据更相似,这可以提高模型的泛化能力。

  • 04:20:00 该视频展示了如何使用 TensorFlow 2.0 中的预训练模型来提高分类的准确性。

  • 04:25:00 在此视频中,演示者解释了如何使用预训练的 TensorFlow 模型来识别不同动物的图像。首先,他们解释了如何将模型加载到 TensorFlow 中并将图像缩放到相同的大小。接下来,他们展示了如何将模型应用于训练和验证数据集。最后,他们演示了如何使用该模型识别动物图像。

  • 04:30:00 在此视频中,讲师演示了如何使用 TensorFlow 2.0 创建一个神经网络,以在包含 1000 类猫狗的数据集上进行训练。使用基础模型对网络进行预训练,然后添加预测层。讲师还展示了如何冻结层的可训练参数,以便网络在使用它进行预测时不会被重新训练。然后在新数据集上对模型进行评估和训练。

  • 04:35:00 该视频介绍了如何使用 TensorFlow 训练可以预测图像类别的模型。该视频涵盖了深度学习和卷积神经网络等基本概念。

  • 04:40:00 该视频介绍了如何使用递归神经网络来理解和处理自然语言。第一部分讨论什么是自然语言处理以及递归神经网络与常规神经网络的区别。第二部分讨论如何将文本数据转换为循环神经网络可以使用的数字数据。最后一节讨论如何使用递归神经网络执行情感分析和字符斜杠文本生成。

  • 04:45:00 我们将要讨论的第一种方法称为词袋。该算法查看一个句子并将其转换为数字表示形式,其中句子中的每个单词都用数字编码。这对于仅存在一个单词就足以确定句子含义的任务很有用。但是,在处理更复杂的输入时,这种技术可能会失效。

  • 04:50:00 该视频讨论了对文本进行词袋编码以及其他几种编码方法的使用。这种方法的一个问题是它会丢失单词的顺序,这会使机器学习模型难以正确识别文本中的情绪。

  • 04:55:00 在此视频中,讲师解释了词嵌入的工作原理以及它们如何用于提高神经网络预测的准确性。接着讲师介绍循环神经网络,这是一种特别擅长处理文本数据的神经网络。


第 6 部分

  • 05:00:00 循环神经网络是一种以不同时间步长处理数据并维护内部记忆的神经网络。这允许网络逐渐建立对文本或输入的理解。

  • 05:05:00 该视频介绍了 TensorFlow 2.0 的基础知识,其中包括对简单循环神经网络 (RNN) 层和长短期记忆 (LSTM) 层的描述。 LSTM 层旨在帮助 RNN 层记住文本序列中的前面的句子,随着序列长度的增加,这会变得越来越困难。

  • 05:10:00 TensorFlow 2.0 完整课程 - Python 神经网络初学者教程涵盖了神经网络的基础知识,包括循环神经网络,用于电影评论的情感分析。

  • 05:15:00 在此视频中,演示者展示了如何使用 Python 将文本评论填充到特定长度,并描述了模型的训练方式。他们还提到通过使用 GPU 来加快训练过程。

  • 05:20:00 在此视频中,作者为初学者提供了完整的 Python 神经网络教学课程。本课程首先介绍神经网络,然后介绍如何使用 TensorFlow 2.0 训练神经网络。神经网络训练完成后,作者将演示如何对电影评论数据集进行预测。结果表明神经网络不够准确,作者提供了一个函数将文本编码成token供神经网络处理。作者还提供了解码功能,将文本转换回单词。

  • 05:25:00 这个由 1 段组成的摘要解释了解码整数如何将编码文本用于 Python 中的电影评论。此函数采用一系列单词并将它们转换为整数,然后使用 ENCODE 文本函数对整数进行编码。最后,该模型用于预测给定文本片段的评论。第一次评论预计为 72% 正面,而第二次评论预计为 23% 正面。

  • 05:30:00 在 TensorFlow 2.0 完整课程的最后一个视频中,创建了一个循环神经网络来生成基于莎士比亚文本的戏剧。加载并读入文件,并计算文本的长度。读取并分析前 250 个字符以确定编码方案。字符被编码为整数并创建词汇表。每个字符的索引被计算并存储在词汇表中。

  • 05:35:00 在此视频中,讲师教授如何使用 TensorFlow 训练使用文本数据集的神经网络。指导员首先将文本数据集转换为整数,然后使用每个时期 101 个训练示例的序列来训练神经网络。

  • 05:40:00 该视频介绍了如何使用内置功能“构建模型”在 TensorFlow 2.0 中创建模型。该模型在一组 64 个训练示例上进行训练,然后保存以便可以对一个输入序列进行预测。

  • 05:45:00 作者描述了使用 TensorFlow 训练神经网络所需的步骤。首先,作者描述了神经网络的输入和输出形状。接下来,作者解释了如何创建损失函数来优化神经网络。最后,作者演示了如何使用模型预测 100 个样本的序列。

  • 05:50:00 在此视频中,详细解释了 TensorFlow,包括它如何与循环神经网络一起工作。该视频还介绍了如何创建损失函数以确定模型的性能。
     
  • 05:55:00 该视频介绍了用于训练神经网络的 TensorFlow 2.0 库,并演示了如何使用新的批量大小重建模型。该视频还演示了如何使用 TensorFlow 生成文本。


第 7 部分

  • 06:00:00 在此视频 TensorFlow 2.0 完整课程 - Python 神经网络初学者教程中,用户解释了如何使用递归神经网络生成文本序列。第一步是重置网络状态并生成预测列表。然后,用户在 B 电影剧本上训练网络,并显示结果。

  • 06:05:00 本视频教程涵盖了 TensorFlow 2.0 的基础知识,包括如何在 Python 中创建简单的神经网络。然后视频继续讨论强化学习,这是一种更复杂、更先进的技术。该视频最后讨论了术语并回顾了强化学习是什么。

  • 06:10:00 强化学习是一种训练 AI 在环境中完成任务的方法,方法是奖励它们采取能够提高性能的行为。强化学习的目标是最大化奖励,奖励可以是智能体试图在环境中获得的任何东西。在本课程中,讲师介绍了状态、动作和奖励的概念。

  • 06:15:00 此示例中代理的目标是通过学习一个提示表来最大化其在环境中的奖励,该提示表预测不同状态下不同动作的奖励。

  • 06:20:00 TensorFlow 是一个机器学习库,允许用户创建可以从数据中学习的模型。在此视频中,讲师解释了 Q 学习的工作原理,以及如何使用它来优化代理在模拟环境中的行为。他继续解释如何使用提示表来优化代理的行为。

  • 06:25:00 在本视频中,我们了解了 TensorFlow 2.0 初学者教程中使用的神经网络。视频的第一部分介绍了神经网络的基础知识及其工作原理。然后,我们探索如何创建一个简单的代理,通过使用当前提示表或随机选择一个动作来学习在 3D 环境中导航。视频的第二部分解释了用于更新代理的提示表的公式。

  • 06:30:00 《TensorFlow 2.0完全教程-Python神经网络入门教程》视频介绍了TensorFlow 2.0编程语言及其相关的神经网络数据结构和算法,神经网络是一种机器学习模型。然后,该视频演示了如何使用 openAI gym 软件创建和训练简单的神经网络模型。

  • 06:35:00 TensorFlow 2.0 完整课程首先介绍了用于训练神经网络的 actor-critic 模型。然后展示了如何使用 NumPy 和 TensorFlow 创建一个结冰的湖面环境。该课程涵盖如何使用 q 学习来解决环境中的导航问题。

  • 06:40:00 该视频为初学者提供了有关如何使用 TensorFlow 2.0 创建神经网络的完整教程。首先,讲师解释 epsilon 变量及其如何影响代理采取随机行动的机会。接下来,讲师演示如何创建奖励列表以及如何使用奖励公式更新代理的 q 值。最后,讲师展示了如何设置代理的当前状态并检查它是否已完成对环境的探索。

  • 06:45:00 在《TensorFlow 2.0 完整课程-Python 神经网络入门教程》的最后一个模块中,讲师解释了如何使用 cue table 来调整 epsilon 值以随着 agent 的移动缓慢增加平均奖励一个迷宫。

  • 06:50:00 本视频教程介绍了强大的机器学习库 TensorFlow 的基础知识。在介绍了 TensorFlow 及其关键概念之后,本教程将引导观众完成一系列关于深度学习和强化学习等不同机器学习任务的教程。
 

Keras with TensorFlow 课程 - Python 深度学习和神经网络初学者教程



Keras with TensorFlow 课程 - Python 深度学习和神经网络初学者教程

Keras with TensorFlow 课程的重点是教用户如何使用 Keras,这是一种用 Python 编写并与 TensorFlow 集成的神经网络 API。它涵盖了组织和预处理数据、构建和训练人工神经网络的基础知识,以及数据规范化和创建验证集的重要性。该课程还提供视频和文本文件等资源,以及有关如何设置 GPU 以提高效率的指南。用户还可以学习如何保存和加载模型,包括保存所有内容的选项,仅保存架构或仅保存权重。该课程适合那些具有基本编程技能和一些 Python 经验的人。

“使用 TensorFlow 的 Keras 课程”的第二部分涵盖了各种主题,从将权重加载到与原始模型具有相同架构的新 Keras 模型开始。然后,讲师解释如何准备和预处理图像数据以训练卷积神经网络将图像分类为猫或狗,然后继续为第一个 CNN 构建和训练 Keras 顺序模型。本节详细介绍了使用包含标签数据的生成器来训练模型以在模型拟合期间进行验证,以及如何绘制混淆矩阵来评估模型性能。最后,它演示了如何微调预训练的 VGG 16 模型以对猫和狗的图像进行分类、调整其预处理并进行训练。

在第三部分中,讲师介绍了 MobileNets,这是一种更小、更快的替代更复杂模型的方法。他们演示了在 Jupyter Notebook 中下载和使用 MobileNets、组织手语数字的数据集,以及为新的分类任务微调模型。讲师强调了将迭代器正确指向数据集在磁盘上的位置、训练期间要冻结的层数以及调整超参数以减少过度拟合问题的重要性。最后一节介绍了数据增强及其减少过度拟合和增加数据集大小的潜力,并提供了有关不同类型增强(例如,移动、翻转、旋转)、将增强图像保存到磁盘以及将它们添加回训练的说明放。

  • 00:00:00 在本节中,解释了该课程的重点是教授如何使用 Keras,这是一种用 Python 编写并与 TensorFlow 集成的神经网络 API。它从组织和预处理数据的基础知识开始,然后继续构建和训练人工神经网络。该课程推荐一些基本的编程技能和一些 Python 经验,但也会在代码实现之前简要介绍每个深度学习概念。该课程还提供视频和文本资源,包括课程中使用的代码文件,这些资源会定期测试和维护,并且 Deep Lizard Hive Mind 的成员可以下载这些文件。进一步解释说,Keras 的开发重点是实现快速用户实验,并且与 TensorFlow 集成,Keras 现在已与 TensorFlow API 完全集成。建议学习多种神经网络API,而不是永远坚持一种,以展示经验和它们之间的比较,从而使候选人更有价值。

  • 00:05:00 在 Keras with TensorFlow 课程的这一部分中,讨论了对 GPU 的需求,并指出这不是课程所必需的。但是,如果用户想要使用 GPU,可以使用有关如何设置 GPU 以使用 TensorFlow 的指南。建议先使用 CPU 完成课程,然后设置 GPU 以提高效率和速度。下一节将讨论如何为人工神经网络准备和处理数值数据,以及 Keras 中的顺序模型期望的不同数据格式。 fit 函数期望输入数据 (x) 位于 NumPy 数组、TensorFlow 张量、dict 映射、TF 数据集或 Keras 生成器中。目标数据 (y) 也需要采用与 x 相同的格式。

  • 00:10:00 在本节中,讲师解释了数据规范化或标准化技术可以将数据放入一种格式,使深度学习模型更容易从中学习。讲师使用一个简单的数字数据集作为示例,其中对 13 到 100 岁的个体进行了实验药物测试,大约 95% 的老年人群(65 岁或以上)的患者出现了副作用,而大约 95 65 岁以下患者的 % 没有出现副作用。然后,指导员通过一个 for 循环生成随机整数,模拟患者经历或未经历副作用的真实场景,然后将这些样本和相应的标签添加到两个单独的列表中。

  • 00:15:00 在视频的这一部分,讲师总结了在 TensorFlow 中集成的 Keras API 中使用 NumPy 数组为神经网络生成和准备数据的过程。他们解释说样本列表包含年龄,标签列表包含代表副作用或没有副作用的 0 和 1,以对应每个年龄。然后对数据进行处理并将其转换为 fit 函数期望的 NumPy 数组格式,并使用 shuffle 函数对数据进行混洗,以从数据生成过程中移除任何强加的顺序。此外,数据从 13 到 100 的比例重新缩放到 0 到 1 的比例,并为拟合变换函数重新整形以接受一维数据。最后,讲师演示了如何使用来自 keras API 的顺序模型在此数据上构建人工神经网络。

  • 00:20:00 在视频的这一部分,演示者解释了如何使用与 TensorFlow 集成的 Keras API 创建神经网络模型。该模型是一个顺序模型,创建为 Sequential 类的实例。第一个密集层创建第一个隐藏层,有 16 个单元和 ReLU 激活函数。第二个密集层创建第二个隐藏层,有 32 个单元和 ReLU 激活函数。最后一层是输出层,有两个单元代表两个可能的输出类。演示者解释说,输出层之后是 Softmax 函数,它给出了每个输出类别的概率。然后演示者演示如何使用 model.summary() 函数来显示模型架构的可视化摘要。

  • 00:25:00 在本节中,我们将学习如何在前面部分中创建和处理的数据上训练神经网络。构建模型后,我们使用适当的损失、优化器和指标对其进行编译。然后,我们在拟合函数中指定输入数据、目标数据、批量大小和训练轮数。训练开始,我们看到在 30 个时期内,我们的简单模型毫不费力地达到了 94% 的准确率。这是一个很好的例子,说明 Keras 入门很容易。

  • 00:30:00 在本节中,将在训练机器学习模型的背景下解释验证集的概念,并强调其使用的重要性。验证集的创建允许用户衡量模型对未接受过训练的数据的概括程度。可以通过检查验证集结果的准确性来避免过度拟合,该准确性不应显着低于训练数据。讨论了通过 Keras 顺序模型创建和使用验证集的两种方法,第二种方法允许 Keras 为用户创建验证集。

  • 00:35:00 在本节中,视频讨论了如何使用验证拆分参数从训练集中创建验证集,该参数将指定百分比的训练数据拆分为验证集。该视频指出,验证集完全脱离了训练集,并且会在调用拟合函数时即时创建。在将训练数据传递给拟合之前对其进行打乱也很重要,以确保验证集不仅仅是未打乱数据的最后 X%。该视频还解释了如何使用验证集来检查模型是否过拟合或泛化良好,并讨论了下一步使用测试集进行推理。

  • 00:40:00 在本节中,讲师解释了深度学习中的推理过程。推理是在真实世界的数据集上部署经过训练的模型,以获得对模型以前从未见过的新数据的预测的过程。为了确保模型能够很好地概括以对新数据做出准确的预测,讲师建议使用测试集。测试集应该以与训练数据相同的格式进行处理。作者演示了如何通过混洗测试数据,将其缩放到 0 和 1 之间,并使用经过训练的模型预测测试数据以获得测试集中每个元素所属类别的概率。

  • 00:45:00 在本节中,我们将使用混淆矩阵直观地观察神经网络模型对测试数据的预测效果。通过导入必要的包并使用 scikit-learn 创建混淆矩阵,我们可以将测试集的真实标签与预测标签进行比较,从而更好地了解我们模型预测的准确性。我们还将了解如何绘制混淆矩阵函数以及如何获取、预处理和可视化其中的某些值。在 deep lizard 博客上还提供了指向 Keras with TensorFlow 课程的有用功能的链接。

  • 00:50:00 在本节中,讲师演示了如何绘制混淆矩阵以可视化模型预测的准确性。该图在 x 轴上显示预测标签,在 y 轴上显示真实标签。正确的预测显示在从图的左上角到右下角的对角线上的蓝色方块中。混淆矩阵允许用户可视化模型的执行情况并识别可能需要改进的类。讲师解释说,混淆矩阵是用于评估模型性能的一个很好的工具,它可以帮助深入了解哪些类需要进一步的工作。最后,讲师展示了如何使用 .save() 函数保存 Keras 顺序模型,该函数将模型的架构、权重和训练配置保存到 h5 文件中。

  • 00:55:00 在本节中,讲师介绍了使用 TensorFlow 在 Keras 中保存和加载模型的不同方法。第一个也是最全面的选项是保存和加载有关模型的所有内容,包括其架构、权重和训练配置。第二种选择是使用“to JSON”函数只保存模型的架构,稍后可以使用它来创建具有相同架构的新模型。第三个选项是使用“保存权重”功能仅保存模型的权重,可以将其加载到新模型中以更新其权重,但不保存有关模型的任何其他详细信息。讲师还解释说,可以使用 YAML 字符串而不是 JSON 字符串来完成相同的过程。
  • 01:00:00 在本节中,演示者讨论了将权重加载到与原始模型具有相同架构的新 Keras 模型中。他解释说,加载的权重的形状必须与模型架构的形状相匹配,权重映射才能起作用。然后,演示者展示了如何使用 Keras 中的“加载权重”和“获取权重”功能,使用原始模型的权重加载和填充新模型。然后该部分过渡到一个新主题,即准备和处理图像数据以训练卷积神经网络将图像分类为猫或狗,使用来自 Kaggle 猫与狗比赛的数据集。演示者解释了准备数据进行处理所需的手动和编程步骤。

  • 01:05:00 在本节中,讲师将数据组织成三个子集:训练集、验证集和测试集。教程中使用的数据集有 25,000 张猫狗图像,但为了加快训练过程,仅使用 1,000 张图像进行训练,200 张用于验证,100 张用于测试。数据被组织到每个集合的不同目录中,并检查目录结构以确保它不存在。图像是根据文件名随机选择的,其中猫和狗图像在其各自的文件名中有“猫”和“狗”字样。最后,为每个集合指定数据路径以指向磁盘上的正确位置。

  • 01:10:00 在本节中,视频介绍了如何使用图像数据生成器创建批量数据来为 Keras 顺序模型准备数据。定义训练集、验证集和测试集,并将其大小调整为指定的高度和宽度以实现均匀性。预处理函数 tf.keras.applications.VGG16.preprocess_input 在将图像传递到网络之前应用于图像。该视频警告观众不要过分强调预处理的技术细节,因为这将在以后的剧集中进行解释。此外,该视频指定测试集的 shuffle 等于 false,解释了在运行推理时,需要测试集的未解决标签才能在混淆矩阵中查看预测结果,并且不得对数据进行混洗以访问它们。

  • 01:15:00 在本节中,讲师演示了如何为卷积神经网络获取和组织图像数据。训练批次由十张图像和相应的标签组成,使用扭曲 RGB 颜色数据的预处理函数绘制。然而,在标签的一个热编码向量的帮助下,图像仍然可以区分为猫或狗。讲师指出,有时测试集的相应标签可能不可用,并引导观众访问博客以获取处理此类情况的指导。本集以下一节的预览作为结尾,其中将构建卷积神经网络并在猫狗图像数据上进行训练。

  • 01:20:00 在 TensorFlow 教程的这一部分中,Keras 顺序模型用于第一个卷积神经网络 (CNN)。该模型的第一层是具有 32 个滤波器和 3x3 内核大小的二维卷积层,后跟流行的 ReLU 激活函数,具有“相同”填充以对图像进行零填充。 RGB 格式图像的输入形状指定为 224x224x3。第一个卷积层之后是最大池化层,池大小为 2x2,步幅为 2。另一个 2D 卷积层,类似于第一个,但有 64 个过滤器而不是 32,添加了另一个最大池化层。然后将最大池化层的扁平化输出传递到密集输出层,其中两个节点分别对应于猫和狗。输出层之后是 softmax 激活函数,以给出模型中每个相应输出的概率。

  • 01:25:00 在本节中,讲师讨论如何使用 Keras 和 TensorFlow 训练模型,以及如何在模型拟合期间使用包含标签数据的生成器进行验证。使用 compile 训练模型,然后使用训练集和验证集定义拟合函数,并设置 epoch 和 verbosity。训练过程中出现的警告是TensorFlow内部的一个bug,指导老师指出了如何忽略这个警告。结果表明,虽然在训练集上的准确率为 100%,但验证准确率仅为 69%,表明存在过度拟合。如果要在生产中使用该模型,则需要进一步注意以解决过度拟合问题。下一集将探讨经过训练的模型如何在对测试集中的图像进行预测时保持推理。

  • 01:30:00 在这部分视频中,讲师解释了使用 plot images 函数从测试批次中绘制一批测试数据并为图像打印相应标签的过程。讲师强调了不打乱测试数据集以确保标签和样本之间正确映射的重要性。接下来,通过调用 model.predict 并将测试批次指定为输入来获得预测。讲师打印出四舍五入的预测并解释如何解释它们。他们还提到使用混淆矩阵来可视化结果,scikit-learn 的混淆矩阵函数与使用测试批次类传递的真实标签一起使用。

  • 01:35:00 在本节中,视频讨论了如何使用 TensorFlow 的 Keras API 绘制混淆矩阵来评估模型在对猫狗图像进行分类时的性能。使用 scikit-learn 中的函数绘制混淆矩阵,并相应地调整类索引。混淆矩阵的对角线表示正确的预测,模型似乎过度拟合。下一节将演示如何微调预训练的 VGG 16 模型来对赢得 2014 年 ImageNet 竞赛的猫狗图像进行分类。该视频还简要介绍了 VGG 16 预处理功能,该功能仅从图像数据中减去训练集每个像素计算的平均 RGB 值。

  • 01:40:00 在本节中,讲师解释了对 VGG-16 模型所做的预处理,以及如何以相同的方式处理新数据以匹配 VGG-16 最初的训练方式。讲师提到,Keras 内置了适用于 VGG-16 等流行模型的功能,它具有与相应模型相匹配的预处理。讲师还解释说,VGG-16 模型最初是针对 1000 个不同的 imageNet 类进行预测,目标是将最后一个输出层更改为仅预测猫和狗对应的两个输出类。最后,教师通过遍历每个 VGG-16 层并排除最后一个输出层来创建一个新的顺序模型。这个新模型用于微调,只有两个输出类。

  • 01:45:00 在本节中,我们将了解如何在猫狗数据集上修改和训练经过微调的 VGG 16 模型。模型中预测 1000 个输出类别的最后一层已被删除,并添加了一个只有猫和狗两个输出类别的新密集层。除了包含 8000 个可训练参数的输出层外,之前的所有层都已设置为不可训练。该模型使用分类交叉熵作为损失和准确性作为度量来编译,并通过将训练数据集和验证集传递给它来使用 fit() 方法进行训练。

  • 01:50:00 在本节中,讲师讨论了在猫狗图像上训练 VGG 16 模型的结果,特别是训练集和验证集的准确性。 VGG 16 模型已经在图像网络库中的猫和狗图像上进行了训练,在输出层上进行的训练是训练模型仅输出猫或狗类。在短短的五个 epoch 中,VGG 16 模型的训练准确率达到了 99%,而验证准确率达到了 98%,这表明与简单的卷积神经网络相比,该模型对验证集中的猫和狗数据的泛化能力如何。在下一集中,我们将使用微调的 VGG 16 模型对测试集中的猫狗图像进行推理预测,鉴于验证集上的准确率,我们应该期望在测试集上也能看到不错的结果.

  • 01:55:00 在视频的这一部分,讲师讨论了使用混淆矩阵来评估经过微调的 VGG16 模型在未见过的测试集上的性能。检查混淆矩阵的对角线,表明该模型达到了 96% 的准确率。虽然对 VGG16 模型采用的微调方法很少,但讲师解释说,即将到来的剧集将涵盖其他预训练模型(例如 MobileNets)的更多微调方法。这些更小的低功耗模型更适合部署在移动设备上,因为它们的尺寸和参数数量要小得多。
  • 02:00:00 在视频的这一部分,讲师介绍了 MobileNets - 一种更小、更快的替代更大模型(如 VGG 16)的方法。虽然 MobileNets 不如其中一些重型模型准确,但准确度的降低相对较小。讲师将逐步介绍在 Jupyter Notebook 中下载和使用 MobileNets 的步骤,包括导入必要的包、下载和分配 MobileNet 模型,以及创建一个名为“prepare_image”的函数来调整图像的大小和格式,然后再将它们传递给 MobileNet模型进行处理。总的来说,重点是理解在使用不同的深度学习模型时在准确性和大小/速度之间的权衡,以及如何有效地使用它们。

  • 02:05:00 在本节中,讲师演示了如何使用预训练的 MobileNet 模型来预测给定图像的前五个可能类别。他们首先显示蜥蜴图像并通过预处理函数将其传递给 MobileNet 的预测函数。 MobileNet 以高概率预测前三类,美洲变色龙是最有可能的。他们对一杯咖啡的图像重复相同的过程,模型以 99% 的概率预测这是一杯浓缩咖啡。最后,他们将草莓图像传递给模型,并获得对最可能类别的预测。

  • 02:10:00 在视频的这一部分,演示者展示了移动网络模型对随机图像样本的预测结果,其中包括草莓和其他水果。演示者提到,尽管模型的准确性略有下降,但在进行视频中显示的测试时并不明显。下一步是为包含手语数字的自定义数据集微调移动网络模型。演示者展示了如何在磁盘上组织数据集并将其移动到工作目录,然后再在 Jupyter Notebook 中以编程方式处理它。

  • 02:15:00 在本节中,讲师解释了如何使用 Python 脚本将图像数据组织到训练、有效和测试目录中。第一步是检查每个类中的样本数,范围从 204 到 208。然后,使用 for 循环,脚本将每个类目录移动到训练目录,并为每个类创建单独的有效集和测试集目录.最后,脚本从 train 目录中的每个类中随机抽样图像,将它们移动到有效目录,然后对更多图像进行抽样并将它们移动到测试目录。运行脚本后,数据被组织到每个集合的单独目录中,每个类中的图像数量可以通过检查相应的目录来验证。

  • 02:20:00 在视频的这一部分,演讲者讨论了他们将使用的数据集的组织结构,这类似于课程前面使用的猫狗数据集,但现在包含 10 个类而不是二。然后,他们演示如何通过定义训练、验证和测试目录以及使用图像数据生成器创建目录迭代器来预处理数据。使用的预处理函数是移动网络预处理函数,它将图像数据缩放到从负一到一的比例。还定义了迭代器设置,例如目标图像大小和批量大小。演讲者强调了将迭代器正确指向数据集在磁盘上的位置的重要性,因为不正确的指向可能导致找到零图像。

  • 02:25:00 在 Keras with TensorFlow 课程的这一部分,讲师解释了如何针对新的分类任务微调预训练的 MobileNet 模型。第一步是下载 MobileNet 模型并使用“model.summary()”函数检查其层。然后,他们选择直到倒数第六层的层,并创建一个包含 10 个单元的新密集输出层。随后创建一个新的功能模型,将所有先前的层传递到倒数第六层,并将移动网络传递到输出层。新模型已创建,下一步是冻结除最后 23 层以外的所有层以进行训练。讲师指出,要冻结的层数需要个人实验,并且可能因任务而异。

  • 02:30:00 在本节中,讲师对原始 MobileNet 模型进行微调,仅训练最后 23 层并将输出层替换为具有 10 个类而不是 1,000 个类的层。该模型使用具有 0.0001 学习率和分类交叉熵损失函数的 Adam 优化器进行编译和训练。经过 30 个 epoch 的训练后,该模型在训练集上达到了 100% 的准确率,在验证集上达到了 92% 的准确率。虽然存在一些过拟合,验证精度低于训练精度,但讲师建议运行更多的 epoch 或调整超参数可能有助于减少过拟合问题。

  • 02:35:00 在这部分视频中,讲师展示了如何在测试集上使用微调模型并将预测绘制成混淆矩阵。混淆矩阵表明该模型表现良好,对测试集的预测大多是正确的。该模型在测试集上具有 90% 的准确性,考虑到验证集上的准确性,这是预期的。讲师强调,关于 MobileNet 的系列提供了有关如何为自定义数据集微调模型和使用迁移学习的见解。下一集将演示如何使用 TensorFlow 的 Keras API 在图像上使用数据增强。

  • 02:40:00 在本节中,强调了数据增强对于深度学习的重要性,尤其是在没有足够的数据来训练模型时。数据增强可以帮助减少过度拟合并增加训练集的大小。然后介绍了使用Keras增强图像数据的代码,其中创建了图像数据生成器并指定了各种增强参数,例如旋转范围、宽度偏移范围和缩放范围。从狗目录中选择一个随机图像,并调用流函数从该单个图像生成一批增强图像。然后使用预定义的 plot images 函数绘制生成的增强图像。

  • 02:45:00 在本节中,讲师讨论了数据扩充,这是一种通过创建现有数据的变体来人为增加数据集大小的方法。通过查看不同的图像,讲师可以识别对它们进行的数据增强类型,例如移动、翻转和旋转,并解释这种技术如何有助于增加数据集。通过增加数据集的多样性,模型可以变得更健壮,更擅长对数据进行分类。讲师还提供了将这些增强图像保存到磁盘并将它们添加回训练集的简短说明。
 

Scikit-learn 速成课程 - Python 机器学习库



Scikit-learn 速成课程 - Python 机器学习库

“Scikit-learn 速成课程”视频概述了如何在 Python 中使用 Scikit-learn 库进行机器学习。该视频涵盖数据准备、模型创建和拟合、通过网格搜索调整超参数以及模型评估。强调了预处理和转换器在提高模型性能方面的重要性,并以标准缩放器和分位数转换器为例。该视频还讨论了模型评估和为问题选择正确指标的重要性,以及在单热编码中处理不平衡数据集和未知类别。演讲者强调理解数据集和模型预测中的潜在偏差,并提供了信用卡欺诈检测的示例。

视频的第二部分涵盖了几个主题,包括网格搜索、指标、管道、阈值调整、时间序列建模和异常值处理。讲师探讨了自定义指标的使用以及在模型创建中平衡精度和召回率的重要性。此外,投票分类器作为元估计器展示,可提高模型的灵活性和表现力。该视频最后介绍了 Human Learn 工具,该工具有助于构建可与机器学习算法相结合的基于规则的系统并对其进行基准测试。此外,探索了 FunctionClassifier 工具,它允许用户创建自定义逻辑作为分类器模型并添加异常值检测等行为。总体而言,该视频全面概述了 Scikit-learn 及其灵活的 API,强调了理解模型创建和定制的相关指标的重要性。

  • 00:00:00 数据 y。 X 包含特征或输入变量,而 Y 包含我们要预测的目标或输出变量。我们将数据分成训练集和测试集来评估模型的性能。接下来,我们需要对数据进行预处理。最重要的预处理技术之一是缩放,它涉及对特征值进行归一化,使它们都落在相似的范围内。这有助于模型更有效地学习。最后,我们选择一个模型并在训练集上对其进行训练。训练好模型后,我们将评估其在测试集上的性能并对新数据进行预测。在接下来的部分中,我们将深入探讨预处理、模型评估和元估计器等主题。

  • 00:05:00 在本节中,演讲者讨论了如何将数据拆分为机器学习模型的 x 和 y 集。 x 集表示用于进行预测的数据,而 y 集包含感兴趣的预测。使用 scikit-learn 库,用户可以加载用于教育目的的基准数据集。演讲者还解释了创建和拟合模型以从数据中学习以进行预测的两阶段过程。 k 最近邻模型用作示例,但还显示了线性回归模型,以说明不同的模型如何在 scikit-learn 中仍然具有相同的 API。

  • 00:10:00 在本节中,Scikit-learn 速成课程视频解释了 K 最近邻模型如何在一个简单的数据集中工作,该数据集以房屋的平方英尺及其与学校的距离为特征。该模型根据最近的 5 个邻居进行预测,但是当使用具有不同尺度的距离时可能会出现挑战,这意味着一个轴对预测的影响可能比另一个轴大得多。这需要重新思考什么是机器学习模型,并建议在将数据提供给 K 最近邻模型之前需要进行一些预处理,以便在做出预测之前完成缩放,并且预置中的所有内容处理框是模型的一部分。

  • 00:15:00 在本节中,视频探讨了 Scikit-learn 中管道的概念,它允许链接处理步骤,并在训练时为整个管道调用点拟合和点预测。通过使用管道,可以自动处理预处理步骤,例如缩放和规范化,以从数据中学习以确保系统的健壮性。但是,这种方法引入了一个问题,即允许模型记住原始数据。该视频展示了图表如何错误地暗示了完美的预测,但模型只能这样做,因为它可以记住原始数据点,从而阻止了对新数据的公平比较和可靠的预测。

  • 00:20:00 在本节中,讲师解释了使用单独的测试数据集评估模型性能的方法,以防止在训练模型的同一数据集上判断模型。他建议将数据集分成几个部分,一个用于训练,另一个用于测试。此外,他还介绍了 Scikit-learn 的网格搜索 cv 对象,该对象允许自动交叉验证以确定要在模型中使用的最佳超参数。此对象可与之前创建的管道一起使用,以微调模型并提高其预测能力。

  • 00:25:00 在本节中,讲师介绍了 KNearestNeighbors 模型的各种参数,并演示了如何使用 GridSearch 对象找到最佳超参数集。 GridSearch 对象将自动执行交叉验证并跟踪结果,便于分析和选择最佳配置。但是,讲师强调,虽然在使用 scikit-learn 时使用适当的 API 和构建块很重要,但理解和分析所使用的数据集同样重要。讲师展示了如何访问和显示数据集的描述,并强调了在构建模型之前花时间了解数据集中的变量的重要性。

  • 00:30:00 在本节中,演讲者讨论了在没有完全理解用于训练和预测的数据的情况下盲目应用机器学习模型的潜在陷阱。即使是看似无害的变量,例如城镇中某个种族的比例,也可能导致有偏见甚至种族主义的算法。演讲者强调了在将模型部署到生产环境之前彻底检查和测试模型的重要性。使用网格搜索和其他方法可以提供统计保证,但也会造成一种错误的乐观感并造成盲点。用户有责任就所使用的数据进行自我教育,并考虑道德和反馈机制,以及在生产中出现问题时的回退方案。

  • 00:35:00 在本节中,强调了数据转换在模型构建中的重要性。该视频讨论了变压器的使用及其在提高模型性能方面的意义。 Scikit-Learn 的标准缩放器用于重新缩放数据集,虽然它的性能不错,但该视频演示了如何通过使用其他缩放方法来改进它。该方法涉及从数据集中减去平均值并除以标准差。虽然该方法对数据进行了缩放,但它会留下异常值,这可能会影响某些算法。该视频进一步强调了预处理对于实现所需模型结果的重要性。

  • 00:40:00 在视频的这一部分,演讲者讨论了归一化的概念以及如何通过计算分位数而不是平均值来有效地使用它。通过使用分位数,异常值对数据的影响会减少,过程变得更加稳健。演讲者演示了如何将分位数变换器作为预处理步骤来实现,以取代标准缩放器,从而在机器学习模型中取得更好的效果。变换器对输出数据的深远影响通过绘图输出函数显示,该函数训练 k 最近邻模型并为标准缩放器和分位数变换器生成预测。

  • 00:45:00 在视频的这一部分,演讲者解释了预处理如何极大地影响数据集的分类。在第一个例子中,说话人使用了 Quantile Transformer,这使得模型更稳定,从长远来看更适合处理异常值。第二个示例展示了添加新功能如何提高模型的性能。通过多项式特征生成 x1 乘以 x2 和 x1 的 2 次方和 x2 的 2 次方等非线性特征,Logistic 回归模型能够产生近乎完美的分类。最后,One Hot Encoder 被介绍为一种将文本或类别转换为数字数据的技术,可用于预测低、中或高风险等类别。

  • 00:50:00 在本节中,视频讨论了在 Scikit-learn 库中使用单热编码时如何处理未知类别。演示者解释说,如果要求编码器转换它以前没有见过的数据,则会导致值错误。然而,这可以通过将“handle_unknown”参数调整为“ignore”来改变。该视频还介绍了一个名为“DrawData.xyz”的网站,该网站允许用户创建自己的数据集,用于预处理和管道练习。演讲者强调预处理步骤至关重要,因为它们可以强烈影响模型的结果。最后,该视频以信用卡欺诈数据集为例,说明了使用网格搜索比较多个模型并选择最佳模型进行预测的好处。

  • 00:55:00 在本节中,视频解释了选择正确指标的重要性以及 Scikit-learn 如何处理它。该视频使用匿名特征和交易金额的数据集来演示如何使用 Scikit-learn 准确预测欺诈案件。但是,由于数据集不平衡,欺诈案例多于非欺诈案例,因此模型无法以默认迭代次数收敛。因此,增加最大迭代次数,调整类别权重参数,使欺诈案例的权重增加一倍,以提高模型的欺诈检测能力。该视频还介绍了 GridSearchCV 以找到类权重参数的最佳值。
  • 01:00:00 在本节中,讲师解释了如何使用网格搜索在 scikit-learn 中找到用于逻辑回归的最佳模型参数。通过定义参数值网格,讲师展示了如何遍历这些超参数并使用交叉验证对其进行测试。网格对象返回结果字典,包括类别权重和分数。逻辑回归模型有一个称为得分的绑定方法,用于确定最佳模型。然后,讲师介绍了 scikit-learn 指标模块中的两个指标,精度和召回分数,并解释了如何使用评分字典将它们包含在网格搜索中。

  • 01:05:00 在本节中,演讲者添加了测试精度和测试召回分数,并设置了一个标志,可以将训练分数添加到交叉验证结果中。然后他们增加交叉验证的数量,并用一个 numpy 线性空间替换四个范围,设置一个更高的值来告诉算法专注于欺诈案件。他们制作了一些图表来总结结果,并指出专注于召回率或精确率会导致完全不同的结果。然后他们决定创建他们的指标,即最小召回精度,它计算精度和召回率之间的最小值,并将其添加到网格搜索中。他们这样做是为了平衡这两个指标,并拥有一个平衡召回率和精确率分数的模型。

  • 01:10:00 ,我们在网格搜索中使用 make_scorer 函数和我们自定义的指标 min_precision_recall,它接受 y_true 和 y_pred 作为输入。然而,make_scorer 函数需要一个估计器、X 数据集、y true 和某种形式的样本权重,因此它将我们的度量函数转换为可用于网格搜索的预测得分器对象。样本权重是一个额外的特征,可以传递给机器学习模型,并允许我们说特定行比另一行更重要。我们可以直接传递估计器并使用预测函数计算预测的 y 值,而不是使用 make_scorer 函数。

  • 01:15:00 在本节中,演讲者讨论了样本权重在检测欺诈中的用途,并展示了如何将其添加到函数中以实现数值稳定性。他们还展示了增加样本权重对算法模型的影响。演讲者随后建议使用异常值检测算法来检测欺诈,并展示了如何为这种方法调整指标。他们用隔离森林算法代替逻辑回归,并演示这如何影响精度和召回分数。最后,演讲者编写了他们的度量函数变体,将离群值预测转化为欺诈标签预测。

  • 01:20:00 在本节中,解说员讨论了 Scikit-learn API 的灵活性,以及通过在自定义指标中传入 y 标签,将离群值检测算法用作分类器的能力。这有助于判断离群值模型是否适用于分类问题。但是,解说员警告说,关注标签的质量很重要,因为这会显着影响模型的指标。此外,解说员还指出了一些指标的自定义设置,例如指定是否越大越好,以及某些指标需要进行概率度量。最后,解说员提到了 Scikit-learn 处理元模型的能力。

  • 01:25:00 在本节中,讲师解释了 scikit-learn 管道的工作原理以及仅将 scikit-learn 管道用于机器学习模型的局限性。讲师建议使用元估计器作为绕过管道限制的方法,以向模型添加额外的步骤和后处理工具。讲师提供了元估计器、投票分类器的示例,以及如何通过为每个估计器赋予权重来使用它来平衡数据集的不同模型。

  • 01:30:00 在本节中,讲师演示了如何使用带有 scikit-learn 的投票分类器,它可以组合以不同方式工作的不同模型以产生更准确的预测。此外,该模型可以用作其他估计器的输入,从而增加了灵活性和表现力。讲师还介绍了使用阈值元模型调整逻辑回归模型中的阈值以权衡召回精度的想法,反之亦然。这通过如何在网格搜索中使用阈值模型的示例进行了演示。通过使用 scikit-learn 提供的这些技术,可以调整模型参数并获得更好的性能。

  • 01:35:00 在本节中,演讲者讨论了使用网格搜索来调整二元分类器的阈值。他们表明精度和召回曲线随着阈值的变化而变化,但准确率保持相对一致。演讲者解释说,这种后处理步骤最好作为接受另一个模型作为输入的元模型来实现。然后,演讲者演示了使用 Scikit-learn 的 Pipeline 和 Group(byRegressor 类构建元模型的示例,以按饮食对数据进行分组,然后对每个组使用不同的线性回归模型。他们解释说,这种分组对于分类变量的影响可能不仅仅是一个常数变化的情况。

  • 01:40:00 在本节中,视频介绍了时间序列任务并展示了如何使用分组预测变量和虚拟回归变量对其建模。它指出,该预测对中期来说是好的,但在最近几年低于预期,在过去则超过预期。为了使模型更好,视频建议关注更新的数据并忘记过去的数据。它引入了样本权重的概念,允许用户指定对特定数据点的权重。然后视频演示了如何向模型添加衰减,这使得最近的数据点比旧数据点更重要。通过这样做,模型变得更具表现力,并且在最近的数据上表现更好,同时忽略了遥远的历史。然而,这个技巧可能会导致训练数据的性能比测试数据差的情况。

  • 01:45:00 在本节中,演讲者介绍了一个名为 Human Learn 的工具,这是一个开源项目,旨在提供 scikit-learn 兼容工具,帮助构建和基准化基于规则的系统。演讲者解释说,过去更常见的是使用人类专家来提出数据分类的业务规则和系统,而不是机器学习算法。然而,机器学习模型并不完美,可能会表现出有问题或无效的行为。 Human Learn 的目标是构建基于规则的系统,这些系统可以很容易地针对机器学习模型进行基准测试,同时也可以与它们相结合。演讲者演示了如何使用 Titanic 数据集构建基于规则的系统,并解释了 Human Learn 如何使将这些系统整合到您的日常工作流程中变得更加容易。

  • 01:50:00 在视频的这一部分,演讲者介绍了 scikit-learn 中的 FunctionClassifier 工具,它采用用户定义的函数并将其转换为 scikit-learn 兼容的分类器。该工具还允许对用户函数中定义的任何参数进行网格搜索优化。演讲者演示了如何使用 FunctionClassifier 工具对与泰坦尼克号灾难相关的数据集的阈值参数进行网格搜索。该工具的灵活性允许用户使用自定义逻辑创建任何 Python 函数作为分类器模型,并添加异常值检测等行为。

  • 01:55:00 在本节中,讲师解释了如何在现有机器学习模型中处理异常值。通过在模型前面添加逻辑,可以识别异常值并为其分配不同的标签。该软件包允许使用预先存在的机器学习模型构建基于规则的系统,从而在自然智能和人工智能之间取得平衡。讲师使用 scikit-lego 包和 load penguins 函数来说明根据其属性有效预测企鹅的种类。该功能使用交互式图表,教师在需要分类的数据点周围绘制多边形。然后使用 point-in-poly 算法对数据点进行分类。交互式分类器支持从 json blob 定义 scikit-learn 兼容模型。然后,可以从数据框生成 x 和 y 数据集,并且可以像任何循环仪模型一样使用该模型。
  • 02:00:00 在本节中,演讲者强调了绘制的机器学习模型的特性和优势。通过使用 Matplotlib 中的图表功能,他演示了绘制的模型如何预测新示例的分类并有效处理缺失数据。此外,演讲者还展示了如何通过检查点是否在多边形之外来将同一张图用作异常值检测系统。他还演示了如何使用绘图机制将标签分配给数据点,即使标签不容易获得,这也使其成为一个有用的预处理步骤。

  • 02:05:00 在本节中,演讲者讨论了交互式图表 API,它是相对实验性的,可以充当 scikit-learn 转换器或在 pandas 管道中添加两个新列,其中包含有关数据点在图表中出现的计数多边形。演讲者建议结合使用机器学习算法和业务规则来创建基于规则的系统。此外,演讲者还推荐了几个资源,例如 freeCodeCamp、pi 数据 YouTube 频道和 scikit-learn 文档页面,以了解有关机器学习和 scikit-learn 的更多信息。
 

用于深度学习和机器学习的 PyTorch – 完整课程(第 1-4 部分)


用于深度学习和机器学习的 PyTorch – 完整课程

00:00:00 - 01:00:00 “PyTorch for Deep Learning & Machine Learning”在线课程讲师 Daniel Bourke 向观众介绍该课程,该课程侧重于使用 Python 代码在 PyTorch 中实现机器学习概念。课程涵盖的主要主题包括迁移学习、模型部署和实验跟踪。该视频介绍了机器学习和深度学习及其区别,深度学习更适合需要大量数据的复杂问题,并提供对非结构化数据的洞察力。解释了神经网络的解剖结构,课程涵盖了机器学习的不同范式,例如监督学习和迁移学习。此外,该视频探讨了深度学习的潜在应用,特别是在对象检测和自然语言处理方面。最后,解释了 PyTorch 的好处,例如标准化研究方法和使机器学习代码能够在 GPU 上运行以高效挖掘数值计算。

01:00:00 - 02:00:00 这部分涵盖 PyTorch 的基础知识、预处理数据、构建和使用预训练的深度学习模型、将模型拟合到数据集、进行预测以及评估模型的预测。讲师强调实验、可视化和提问的重要性,以及使用课程资源(包括 GitHub、讨论和 learnpytorch.io)的重要性。还向学习者介绍了 Google Colab,它提供了使用 GPU 或 TPU 加速来缩短计算时间、预安装的 PyTorch 和其他数据科学包的能力。该课程深入介绍了张量作为深度学习的基本构建块,演示了如何创建具有不同维度和形状的张量,包括标量、向量和矩阵张量。该课程还包括创建随机张量、0 和 1 张量,以及如何指定数据类型、设备,以及在创建张量时需要 grad 参数。

02:00:00 - 03:00:00 在此 PyTorch 教程中,讲师涵盖了张量运算的各个方面,包括故障排除、操作、矩阵乘法、转置和聚合。他们解释了在使用深度学习模型时保持正确的张量形状和数据类型的重要性,并演示了如何使用 PyTorch 命令检查和更改这些参数。该教程包括面向观众的挑战,例如练习矩阵乘法和查找张量的位置最小值和最大值,并提供有用的技巧来避免常见的形状错误和提高性能,例如在 for 循环上使用矢量化。此外,讲师还介绍了几个有用的 PyTorch 函数,用于重塑、堆叠、压缩和解压张量。

03:00:00 - 04:00:00 这部分涵盖了与 PyTorch 相关的各种主题,包括重塑、查看、堆叠、挤压、取消挤压和置换等张量操作方法。讲师提供代码示例,强调张量形状操作在机器学习和深度学习中的重要性,并挑战观众尝试索引张量以返回特定值。该课程还涵盖了 PyTorch 张量和 NumPy 数组之间的数据转换以及每种数据的默认数据类型,以及神经网络中可再现性的概念以及使用随机种子来减少实验中的随机性。讲师解释了如何访问 GPU 以实现更快的计算,并提供了诸如 Google Colab、Colab Pro、使用您自己的 GPU 或使用 GCP、AWS 或 Azure 等云计算服务的选项。

04:00:00 - 05:00:00 这部分为初学者涵盖了广泛的主题,包括如何使用 PyTorch 设置 GPU 访问、使用 PyTorch 中的 nn 模块、创建线性回归模型等。讲师强调了与设备无关的代码在不同设备上运行的重要性,并牢记存储张量和模型的设备类型。该课程还包括用于练习所学内容的练习和额外课程,讲师提供有关如何在 Colab 中进行练习的提示。该课程涵盖训练和评估机器学习模型、将数据拆分为训练集和测试集以进行泛化以及可视化数据。讲师解释了如何使用纯 PyTorch 创建线性回归模型,其中涉及使用 init 函数创建构造函数,使用 nn.parameter 创建权重参数,并使用 torch.rand 将其设置为随机参数。

05:00:00 - 06:00:00 这部分涵盖的主题包括使用 PyTorch 创建线性回归模型、通过 PyTorch 实现梯度下降和反向传播等优化算法,以及了解如何测试 PyTorch 模型的预测能力。还讨论了在进行预测、初始化模型参数、使用损失函数来衡量模型预测的准确性以及优化模型参数以提高模型准确性时使用 torch.inference_mode 上下文管理器的重要性。此外,还介绍了 PyTorch 中的基本模块,包括 torch.nn、torch.nn.module、torch.optim 和 torch.utils.dataset。

06:00:00 - 07:00:00 这部分涵盖了 PyTorch 和机器学习的各个方面。其中一节重点介绍了在 PyTorch 中构建训练循环所需的步骤,包括遍历数据、计算损失和执行反向传播。讲师强调了选择合适的损失函数和优化器的重要性,并介绍了梯度下降的概念。另一部分讨论了优化器和学习率,以及它们如何影响模型的参数。该视频还强调了测试的重要性,并提供了创建测试预测和计算测试损失的概述。该课程为那些对反向传播和梯度下降的数学背景感兴趣的人提供了额外的资源。

07:00:00 - 08:00:00 这部分涵盖了与 PyTorch 相关的多个主题。本课程讨论了通过记录损失值和绘制损失曲线来跟踪模型进度的重要性,损失曲线应显示下降趋势。讲师还讲解了保存和加载 PyTorch 模型的方法,包括保存状态字典、使用 torch.nn.module.loadStateDict 方法或 torch.load 方法加载模型以及测试加载的模型。在后面的部分中,课程包括创建线性回归模型和使用 PyTorch 中预先存在的模型,例如通过子类化 nn.module 的线性层。

08:00:00 - 09:00:00 这部分涵盖了深度学习和机器学习领域的广泛主题。第一部分涵盖 torch.nn 中可用的不同层、这些层的预构建实现,以及如何使用损失函数和优化器函数训练 PyTorch 模型。在后续部分中,讲师解释了与设备无关的代码的重要性、保存和加载 PyTorch 模型,以及如何处理分类问题。讲师提供示例并强调输入数字编码的重要性、创建自定义数据以及分类模型中涉及的设计复杂性,例如隐藏层、神经元、损失函数和优化器的数量。最后,讲师强调,从数据开始任何机器学习问题都是最重要的一步。

09:00:00 - 10:00:00 这部分概述了如何使用 PyTorch 创建和训练用于二元分类的神经网络。该视频涵盖了广泛的主题,包括创建自定义数据集、检查输入和输出形状、准备训练数据、创建模型并将其发送到 GPU、为模型选择优化器和损失函数以及进行预测。该课程包括这些概念的实际演示,旨在提供对使用 PyTorch 进行机器学习项目的全面理解。

10:00:00 - 11:00:00 这部分涵盖了几个主题,包括损失函数、优化器、激活函数、训练循环和评估指标。讲师解释了如何设置损失函数和优化器、创建精度函数以及将原始对数转换为预测概率和标签。该课程还回顾了 BCE 损失和 BCE with logits 损失之间的区别,以及如何计算分类模型的测试损失和准确性。此外,讲师还提供了有关提高模型性能的技巧,例如增加神经网络的深度、调整超参数以及从外部 Python 脚本导入和使用辅助函数。

11:00:00 - 12:00:00 在这部分中,讲师解释了如何通过改变超参数(例如隐藏单元的数量、层数和轮数)来改进模型,并强调了测试的重要性一次更改一个以确定改进或退化。他们还讨论了参数和超参数之间的区别,以及区分这种区别的重要性。此外,讲师还介绍了模型无法正常工作时的故障排除技术,并介绍了非线性在机器学习和深度学习模型中的重要性。讲师通过各种示例演示这些概念,包括线性和非线性回归问题,并展示如何在测试不同的超参数和损失函数的同时训练和评估模型。

12:00:00 - 13:00:00 这门用于深度学习和机器学习的 PyTorch 课程涵盖了用于构建模型的基本到高级 PyTorch 概念。讲师介绍了非线性的概念,并演示了如何使用 PyTorch 使用非线性来构建分类模型。他们还讨论了构建优化器、损失函数和自定义激活函数。强调了结合线性和非线性函数以通过堆叠这些函数的层来创建模型来查找数据模式的重要性。该课程涵盖二元和多类分类模型,并解释了如何在 PyTorch 中设置它们。本节最后演示了如何使用输入特征和输出特征初始化多类分类模型。

13:00:00 - 14:00:00 这部分的讲师讨论使用 PyTorch 的 nn.Sequential 方法创建线性层堆栈模型以执行多类分类。他们使用交叉熵损失和随机梯度下降 (SGD) 解释了损失函数和优化器的创建。讲师还讨论了丢失层以及对机器学习代码进行故障排除以解决错误的重要性。他们使用 torchmetrics 和 scikit-learn 库使用准确度、精确度、召回率、F1 分数、混淆矩阵和分类报告等各种分类评估方法演示了对训练模型的评估。最后,讲师展示了如何使用 torchmetrics 包在 PyTorch 中导入和使用预构建的指标函数,并提供了指向 torchmetrics 模块和课外文章的链接以供进一步探索。

14:00:00 - 15:00:00 这部分涵盖了与 PyTorch 和使用机器学习的计算机视觉相关的各种主题。这包括理解计算机视觉问题,例如二进制或多类分类问题,以及学习机器学习模型如何从各种图像示例中学习模式。该视频还介绍了 PyTorch 库(例如 TorchVision),以及它如何包含数据集、预训练模型以及将视觉数据处理为机器学习模型可用数字的转换。此外,讲师还介绍了 FashionMNIST 数据集的输入和输出形状、可视化和探索数据集以识别潜在问题的重要性,并演示了如何使用 PyTorch 和 Matplotlib 绘制和可视化图像数据。

15:00:00 - 16:00:00 这个关于 PyTorch 深度学习和机器学习的视频课程涵盖了准备数据和使用 PyTorch 数据集和数据加载器的重要性。强调了深度学习中小批量的概念,并使用 PyTorch 解释了创建训练和测试数据加载器的过程,批量大小超参数设置为 32。讨论了批量可视化图像的重要性,以及概念引入了扁平化以将多维数据转换为单个向量以用于 PyTorch 模型。涵盖了创建具有展平层和两个线性层的简单神经网络模型的过程,并解释了在 Python 机器学习项目中使用辅助函数的概念。最后,演示了计时功能对于测量模型训练所需时间的重要性以及 TQDM 用于进度条的重要性。

16:00:00 - 17:00:00 课程的这一部分涵盖与 PyTorch 相关的各种主题,从设置训练和测试循环、排除常见错误、评估模型和进行预测开始。讲师强调了通过实验为给定数据集找到最佳神经网络模型的重要性,并讨论了非线性对非线性数据建模的好处。他们还演示了如何在 PyTorch 中创建辅助函数、优化和评估循环以及执行训练和测试步骤。该课程进一步探讨了与设备无关的代码以及在 CPU 和 GPU 上训练模型的优势,最后演示了如何测量两种设备上的训练时间。

17:00:00 - 18:00:00 这部分涵盖了深度学习和机器学习中的许多主题。讲师演示了如何创建和测试深度学习模型、使用 PyTorch 构建卷积神经网络 (CNN) 以及在 PyTorch 中创建块。此外,本教程还介绍了 PyTorch 模型的组成以及卷积在实践中的工作原理、卷积层中步幅和填充值的更改,以及 PyTorch 中的卷积层和最大池化层。在整个视频中,讲师共享资源,提供 PyTorch 代码和分步说明,并提供有关如何创建高效和可重用代码的指导。

19:00:00 - 20:00:00 这部分涵盖了各种主题,例如可视化机器学习模型预测、在 PyTorch 中使用混淆矩阵评估多类分类模型、在 Google Colab 中安装和升级包、保存和加载 PyTorch模型,并使用自定义数据集。该课程还演示了使用 PyTorch 构建计算机视觉模型的过程。讲师强调了利用域库实现数据加载功能和自定义数据加载功能的重要性,并提供了视觉、文本、音频和推荐等各种类别的示例。他们还提供有用的资源,例如 learn pytorch.io 网站和 PyTorch 深度学习存储库。

20:00:00 - 21:00:00 这个用于深度学习和机器学习的 PyTorch 课程的讲师首先介绍了 Food 101 数据集,但提供了一个较小的子集,其中包含三个食物类别,并且只有 10% 的图像用于练习火炬。讲师强调了拥有单独的数据目录的重要性,然后展示了如何使用 Python 图像库 Pillow 和 PyTorch 方法打开、可视化和转换图像。该部分还介绍了使用 PyTorch 进行的数据转换,例如调整图像大小和翻转图像,并且讲师演示了如何使用 PyTorch 将图像加载和转换为机器学习模型的张量。本节最后建议探索 PyTorch 中可用的各种图像转换选项。

21:00:00 - 22:00:00 在此 PyTorch 课程中,讲师解释了如何加载图像数据并将其转换为张量,创建和自定义数据加载器以进行训练和测试,以及创建自定义数据加载类。它们演示了预建数据集函数、图像文件夹的功能,可用于为所有图像自定义转换。他们还介绍了构建自定义数据加载器所需的步骤,包括创建一个函数以从目录中获取类名和映射、子类化 torch.utils.data.Dataset 以及覆盖 get item 和 len 方法。虽然数据加载器的自定义功能很有用,但存在编写错误代码的风险。

22:00:00 - 23:00:00 这部分课程涵盖如何在 PyTorch 中创建和使用自定义数据集和自定义加载器,以及如何实施数据增强技术。讲师演示了如何使用 PyTorch 库构建卷积神经网络,并提供了有关实验领域的建议,包括内核大小和步幅等超参数。该课程还涵盖如何测试扩充管道和利用简单的扩充技术来提高模型准确性。该课程的收获包括 PyTorch 的灵活性以及从基础数据集类继承以创建自定义数据集加载函数的能力。

23:00:00 - 24:00:00 讲师涵盖了用于深度学习和机器学习的 PyTorch 的各个方面,包括解决模型中的形状错误、使用 Torch Info 打印 PyTorch 模型的摘要、创建用于评估的训练和测试步骤函数数据集上的性能,并将这些函数组合成一个训练函数,以便于模型训练。讲师还讨论了对深度学习模型的训练过程进行计时,绘制损失曲线以跟踪模型随时间的进展,以及通过尝试不同的设置(例如添加层或调整学习率)来评估模型性能。最终,这些技能将为使用 PyTorch 构建和评估高级模型奠定坚实的基础。

24:00:00 - 25:00:00 在 PyTorch for Deep Learning & Machine Learning 课程的这一部分,讲师讨论了模型中过度拟合和欠拟合的概念,以及处理它们的方法,例如数据增强,提前停止,并简化模型。他们强调使用损失曲线随时间评估模型性能的重要性,并提供用于比较不同模型性能的工具。该部分还介绍了如何为预测准备自定义图像,并演示了如何使用 torch vision.io 将图像加载到 PyTorch 并将其转换为张量。讲师指出,在将图像传递给模型之前,可能需要调整其大小、转换为 float32 并放入正确的设备中。

25:00:00 - 26:35:00 PyTorch 课程的这一部分涵盖各种主题,例如数据类型和形状、使用 PyTorch 的转换包转换图像数据以及使用预训练模型对自定义数据进行预测。为确保数据在输入模型之前采用正确的格式,重要的是对其进行预处理,将其缩放到 0 到 1 之间,必要时进行转换,并检查其是否具有正确的设备、数据类型和形状.讲师还鼓励学习者通过 PyTorch 自定义数据集练习进行练习,并提供解决方案作为参考。讲师还提到,在 learnpytorch.io 中还有五个额外的章节可供探索,涵盖迁移学习、pytorch 模型实验跟踪、pytorch 论文复制和 pytorch 模型部署等主题。


第1部分

  • 00:00:00 在视频的这一部分,讲师 Daniel Bourke 向观众介绍了 PyTorch 课程,并设定了对初学者友好的视频教程的期望。该课程的重点是在基于 Python 的框架 PyTorch 中实施机器学习概念,观众将通过编写代码来学习。 Bourke 提到该课程将涵盖迁移学习、模型部署和实验跟踪等重要主题,如果观众想了解更多关于 PyTorch 的信息,可以在 learn pytorch.io 上获得更多资源。最后,Bourke 将机器学习定义为使用算法和数学将数据转化为数字并寻找模式的过程,并解释说课程的重点是编写代码,但观众如果想更深入地研究数学,可以找到额外的资源代码后面。

  • 00:05:00 在本节中,解释了传统编程和机器学习之间的区别。传统编程涉及为任务编写规则,而机器学习算法则根据输入和输出数据找出规则。使用机器学习而不是传统编程的原因是解决复杂的问题,手动编写所有规则变得很麻烦。机器学习可以用于任何事情,只要它可以转换成数字,但谷歌机器学习的第一条规则是在转向机器学习之前首先尝试构建一个简单的基于规则的系统。

  • 00:10:00 在本节中,讲师讨论了深度学习的优点和缺点。深度学习有助于解决需要一长串规则的问题、处理不断变化的环境以及在大型数据集中发现见解。然而,深度学习对于需要可解释性的任务并不理想,因为深度学习模型学习的模式通常是人类无法解释的。此外,如果一个简单的基于规则的系统可以解决手头的问题,那么使用它而不是深度学习可能会更好。

  • 00:15:00 在用于深度学习和机器学习的 PyTorch 完整课程的这一部分,讲师比较了机器学习和深度学习。传统的机器学习技术,如 xg boost 之类的梯度提升机器,最适合行和列中的结构化数据。对于非结构化数据,如自然语言或图像,深度学习通常是更好的选择。深度学习模型是概率性的,这意味着它们会押注结果,而基于规则的系统会产生可预测的输出。此外,深度学习模型需要大量数据才能产生很好的结果,但有一些技术可以用较少的数据获得好的结果。

  • 00:20:00 在本节中,讲师解释了结构化数据和非结构化数据之间的区别,以及机器学习和深度学习中每种类型所使用的算法。结构化数据适用于随机森林和梯度提升机等浅层算法,而非结构化数据则需要神经网络。然后,讲师深入研究神经网络的类型,例如全连接神经网络、卷积神经网络、递归神经网络和变压器。讲师建议,一旦学习了神经网络的基本构建块,其他类型的神经网络就会变得更容易理解。该部分以讲师鼓励观众在下一个视频之前研究并形成他们自己对神经网络的定义而结束。

  • 00:25:00 在 PyTorch 课程的这一部分,讲师概述了神经网络及其剖析。神经网络由一个输入层和一个输出层组成,输入层在其中将输入数据转换为数字,多个隐藏层操纵和学习数据中的模式,输出层输出学习到的表示。隐藏层中的节点数量可以自定义,神经网络自行学习表示,也称为特征或权重。不同类型的神经网络可用于不同的问题,例如用于图像的 CNN 和用于自然语言处理的 Transformer。一旦神经网络输出了它的表征,它们就可以被转换成人类可以理解的格式。神经网络的结构也可以定制,层数从几层到一百多层不等。

  • 00:30:00 在本节中,将解释神经网络的结构。神经网络由一个输入层、一个或多个隐藏层和一个输出层组成,每个隐藏层都有许多神经元或隐藏单元。通过使用线性和非线性函数将模式和数据集转换为数值数据。这些模式是使用线性和非线性函数的组合绘制的,以产生所需的结果。讨论了不同的学习范式,包括同时使用数据和标签的监督学习,以及仅使用数据的无监督学习。自我监督学习算法使用数据来寻找模式,而迁移学习涉及使用已经在不同模型中学习的模式。

  • 00:35:00 在本节中,讲师讨论了机器学习的不同范式,特别是监督学习、迁移学习和强化学习。虽然本课程的重点将放在监督学习和迁移学习上,但讲师鼓励学习者在自己的时间探索强化学习。此外,讲师还提供了如何使用深度学习的示例,例如推荐系统、翻译、语音识别和计算机视觉。强调了机器学习的多功能性,因为任何可以转换为数字并通过编程来寻找模式的东西都可以用于机器学习算法。

  • 00:40:00 在视频的这一部分,讲师讨论了深度学习的潜在应用,例如使用计算机视觉进行对象检测以捕获肇事逃逸事件以识别肇事者的汽车。讲师解释了自然语言处理的概念以及它如何用于垃圾邮件检测。然后视频继续介绍 PyTorch 的基础知识,PyTorch 是最流行的深度学习研究框架,它允许在 Python 中进行快速深度学习、访问预构建模型并加速 GPU 性能。 PyTorch 网站被确定为课程的必要资源。

  • 00:45:00 在本节中,讲师讨论了 PyTorch,他声称 PyTorch 是最受欢迎的深度学习研究框架。他引用了 Papers with Code 来证明 PyTorch 的受欢迎程度,该论文追踪有代码的机器学习论文,表明该网站追踪的 65,000 篇论文中有 58% 是用 PyTorch 实现的。此外,他还提供了 PyTorch 受欢迎的各种原因,包括它被 Facebook/Meta、特斯拉、微软和 OpenAI 等公司使用,以及它标准化研究方法的能力。讲师还强调了 Francois Chale 的推文,该推文称赞 PyTorch 是任何人都可以用来解决问题而无需大量投资或工程团队的工具。总的来说,讲师得出的结论是,PyTorch 是一个研究热点,具有多样化的生态系统,并且在行业重量级人物中采用率很高。

  • 00:50:00 在 PyTorch for Deep Learning & Machine Learning 课程的这一部分,讲师讨论了 PyTorch 的各种应用,例如在农业和社交媒体平台(如 Facebook 和 Microsoft)中的应用。此外,他还解释了 PyTorch 如何使用户能够在 GPU 上运行机器学习代码,GPU 在执行数值计算方面非常高效,尤其是在并行处理方面。 PyTorch 利用 CUDA 使机器学习代码能够在 NVIDIA GPU 上运行,虽然 TPU 可用,但在运行 PyTorch 代码时 GPU 往往更受欢迎。此外,他留下了“什么是张量?”的问题。为了让观众去研究,用下面的部分来深入探讨这个话题。

  • 00:55:00 在本节中,讲师解释说张量是 PyTorch 的基本构建块,它们可以是任何表示数字的东西。输入数据经过数字编码以将其转换为张量,张量可以是一张图像或一百万张图像。然后将输入张量传递给神经网络,神经网络通过数学运算对其进行操作并输出另一个张量,然后将其转换回人类可理解的格式。强调了使用 PyTorch 和在线搜索问题答案的原因,以及对课程中将涵盖的特定主题的介绍。

第2部分

  • 01:00:00 在本节中,讲师重点介绍了 PyTorch 课程中涵盖的主题。该课程从 PyTorch 的基础知识开始,重点介绍张量和张量运算,然后转向预处理数据、构建和使用预训练的深度学习模型、将模型拟合到数据集、进行预测以及评估模型的预测。讲师解释工作流程,包括准备数据、选择预训练模型、选择损失函数和优化器、构建训练循环、拟合模型以及通过实验改进模型。最后,讲师强调了在链接课外资源以更多地了解代码背后的理论的同时,使用代码进行编码、探索和试验的重要性。

  • 01:05:00 在本节中,PyTorch for Deep Learning & Machine Learning 课程的讲师建议学习者以科学家和厨师的思维来学习这门课程。他强调实验和可视化对于理解深度学习中的数据的重要性。此外,讲师鼓励学习者提出问题和做提供的练习,以及与他人分享他们的工作,以帮助他们自己和他人的学习。最后,他建议学习者不要想太多,不要说自己学不会,避免让大脑着火。最后,他指导学习者获取课程所需的基本资源,包括包含所有必需材料的 GitHub 存储库。

  • 01:10:00 在本节中,演讲者解释了课程可用的资源以及如何有效地利用这些资源。课程材料(包括代码和笔记本)可在 GitHub 上找到,而课程问答可在同一存储库的讨论选项卡上找到。此外,learnpytorch.io 上还有一本在线书籍。对于非特定课程的 PyTorch 相关问题,强烈推荐 PyTorch 论坛和网站。演讲者随后介绍了 Google Colab,这将是整个课程中使用的主要工具,并鼓励用户通过 colab.research.google.com 访问它来进行编码。

  • 01:15:00 在本节中,讲师解释了如何使用 Google Colab 创建新笔记本并编写 PyTorch 代码。 Google Colab 提供的优势包括使用 GPU 或 TPU 加速来加快计算时间的能力,以及预安装的 PyTorch 和其他常见的 Python 数据科学包。讲师链接到 learnpytorch.io 上的资源笔记本,并提供 GitHub 存储库,学习者可以在其中提出与课程相关的问题。讲师还提到,虽然他们使用 Google Colab 的付费版本,但免费版本足以完成课程。

  • 01:20:00 本节视频介绍如何使用Google Colab或参考设置文档进行本地设置来设置PyTorch。完成本课程的推荐设置是 PyTorch 1.10 和 CUDA 11.3。该视频还建议使用拆分窗口方法来跟进并创建一个笔记本进行练习。该视频的主要重点是介绍张量,这是深度学习的主要构建块,提供创建用数字 7 填充的标量张量的示例,以及如何访问 PyTorch 的 torch.tensor 文档。

  • 01:25:00 在本节中,讲师解释了 PyTorch 张量的基础知识,从使用 torch.dot.tensor 创建张量开始。他鼓励学习者仔细阅读 PyTorch 文档以了解有关该库的更多信息。接下来,讲师解释了标量、向量和矩阵的属性。他阐明标量没有维度,只是一个数字,而矢量只有一维,通常表示为大小和方向。矩阵是下一步,它有两个维度,由两对方括号表示。他解释了维度和形状之间的区别,以及如何根据维度找到矢量的形状。

  • 01:30:00 在本节中,讲师介绍了 PyTorch 中的张量,并解释了它们是深度学习神经网络的基本构建块。讲师演示了如何创建具有不同维度的张量,范围从标量到矩阵再到具有三个方括号对的张量。指导老师解释,维度的个数由方括号对的个数表示,形状由每个维度的元素个数决定。此外,讲师指出,尽管手写张量很乏味,但了解它们的工作原理很重要,因为 PyTorch 广泛使用它们。

  • 01:35:00 在本节中,讲师讨论了 PyTorch 中随机张量对于机器学习和深度学习的重要性。从充满随机数的张量开始,然后调整它们以更好地表示数据是神经网络中的一个关键概念。为了在 PyTorch 中创建随机张量,讲师展示了如何使用 torch.rand 函数,并解释说“大小”和“形状”是同一事物的两个不同版本。还简要讨论了深度学习中变量的命名约定,例如标量和向量小写,矩阵和张量大写。

  • 01:40:00 在本节中,讲师演示了如何使用 PyTorch 创建随机张量,并解释了各种类型的数据(包括图像)可以用张量格式表示。讲师解释说,PyTorch 简化了创建张量的过程,并且在许多情况下,在幕后处理该过程。他们演示了如何创建一个形状类似于图像张量的随机张量,并解释了图像通常表示为具有颜色通道、高度和宽度的张量。讲师强调几乎任何类型的数据都可以表示为张量,使 PyTorch 成为深度学习和机器学习应用的强大工具。

  • 01:45:00 在本节中,讲师介绍如何创建零和一的张量,以及如何创建张量的范围。全零张量对于创建张量掩码很有用,它可以将张量的某些列归零。所有的张量在某些情况下也很有用。讲师解释了如何使用 torch.range,但警告说它可能在某些 PyTorch 版本中被弃用,并建议改用范围函数。

  • 01:50:00 在本节中,解释了 PyTorch 的功能,即使用范围创建张量以及与另一个张量具有相同形状的张量。张量的范围是使用 torch.arange() 创建的,其中可以定义开始、停止和步骤。类似地,torch.zeros_like() 用于创建与输入张量具有相同形状的零张量。该部分然后介绍 PyTorch 中的张量数据类型,指定默认类型为 float 32,即使未指定。

  • 01:55:00 在本节中,我们了解了在 PyTorch 中创建张量时的重要参数,例如数据类型、设备和要求等级。我们发现数据类型是指计算精度的高低,通常与 32 位浮点数和 16 位浮点数张量交互。单精度为 32 位,半精度为 16 位,32 位是 PyTorch 中默认的张量类型。关于张量数据类型的注释是必不可少的,因为它是我们在使用 PyTorch 和深度学习时可能遇到的三个重大错误之一。其他两个错误包括张量没有正确的形状和不在正确的设备上。

第 3 部分

  • 02:00:00 在本节中,讲师讨论了在 PyTorch 中使用张量时保持正确形状和设备的重要性。如果张量具有不同的形状或位于不同的设备(CPU 或 GPU)上,则可能会发生错误。此外,讲师还解释了“grad”参数在数值计算过程中跟踪梯度的作用。该课程包括让观众创建不同数据类型的张量并测试不同类型张量相乘的影响的挑战。讲师警告说,虽然某些操作可能不会导致错误,但其他操作可能会导致数据类型问题,尤其是在训练大型神经网络时。

  • 02:05:00 在视频的这一部分,讲师介绍了如何对张量操作进行故障排除并确保张量具有正确的数据类型和形状以用于机器学习模型。他们演示了如何使用 PyTorch 检查张量的数据类型、形状和设备,使用命令 tensor.Dtype、tensor.shape 和 tensor.device。讲师还指出,如果张量的数据类型或形状不正确,PyTorch 可能会抛出错误,并展示了如何在需要时更改数据类型。最后,他们比较了大小和形状命令,发现它们是可以互换的,一个是函数,另一个是属性。

  • 02:10:00 在本节中,讲师将介绍如何在 PyTorch 中操作张量,特别是加法、减法、乘法、除法和矩阵乘法等张量运算。这些操作对于构建神经网络很重要,因为它们有助于解决构建深度学习模型时最常见的问题。此外,神经网络以各种方式组合这些函数来分析和调整随机张量的数量来表示数据集。讲师演示了如何使用 PyTorch 代码示例执行加法、乘法和矩阵乘法的基本张量运算。

  • 02:15:00 在本节中,讲师介绍了使用 PyTorch 进行的张量运算,并介绍了矩阵乘法的概念。他们演示了如何使用 Python 运算符以及 PyTorch 内置函数执行逐元素乘法、加法和减法。讲师向观众发出挑战,要求他们在深入了解矩阵乘法之前搜索和理解矩阵乘法。他们解释说,在神经网络中执行乘法有两种主要方式,逐元素乘法和矩阵乘法,也称为点积。讲师提供了两种使用矩阵的乘法示例,并强调矩阵乘法是神经网络中最常见的张量运算之一。

  • 02:20:00 在本节中,讲师解释了 PyTorch 中元素明智和点积乘法之间的区别。为了演示这个概念,讲师逐步介绍了两个矩阵相乘的过程,强调了每个元素如何相乘和相加以获得最终结果。接下来,讲师将展示如何使用基本示例执行逐元素乘法,然后使用 torch dot mat mall 函数进行矩阵乘法。本节还介绍了如何使用 for 循环执行矩阵乘法,并解释了两种方法之间的性能差异。

  • 02:25:00 在本节中,视频使用矩阵乘法示例说明了矢量化相对于 PyTorch 中 for 循环的优势。 torch 方法 torch dot matmore 被证明比对小张量使用 for 循环快 10 倍。但是,该视频警告说,对于较大的张量,必须满足两个主要规则,以避免矩阵乘法中的形状错误。第一条规则是两个张量的内部维度必须匹配。

  • 02:30:00 在本节中,讲师解释了矩阵乘法的规则以及张量相乘时如何避免常见的形状错误。第一条规则是矩阵的内部维度必须匹配。为了演示这一点,讲师创建了一个大小为 3x2 的张量,并尝试将其乘以另一个内部维度不同的张量,这会导致错误。第二条规则是生成的矩阵具有外部维度的形状。讲师给出了具有不同张量形状和维度的矩阵乘法示例,以及它们如何产生不同的矩阵形状。讲师鼓励观众在下一个视频之前使用一个网站来练习矩阵乘法作为挑战。

  • 02:35:00 在本节中,讲师讨论了神经网络中的形状错误,这是深度学习中最常见的错误之一。由于神经网络由多个矩阵乘法运算组成,即使是轻微的张量形状误差也可能导致形状误差。然后教师创建两个张量,张量 a 和张量 b,并尝试在它们之间执行矩阵乘法,导致形状错误。为了修复此错误,讲师引入了转置的概念,它可以切换给定张量的轴或维度,并演示了如何使用它来调整 PyTorch 代码中张量的形状。

  • 02:40:00 在本节中,讲师解释转置张量的概念及其在矩阵乘法中的重要性。转置在不改变其基础数据的情况下重新排列张量的元素,并用“点 t”表示。讲师还演示了张量 b 转置时矩阵乘法运算的工作原理,并强调了该运算在神经网络和深度学习中的重要性。转置张量的过程以可视化方式说明,讲师提供分步代码示例以帮助学生理解和练习该概念。

  • 02:45:00 在本节中,讲师使用 PyTorch 和一个名为 Matrix Multiplication 的网站解释了矩阵乘法。他创建了两个张量,张量 a 和张量 b,并表明它们相乘会产生具有特定输出形状的新张量。他挑战观众转置张量 a 而不是张量 b 并查看结果。接下来,讲师介绍了张量聚合,展示了如何使用 PyTorch 方法查找张量的最小值、最大值、平均值和总和。他还解释了张量聚合如何帮助减少张量中的元素数量。

  • 02:50:00 在 PyTorch 教程的这一部分,讲师展示了如何解决 PyTorch 中最常见的错误之一,即数据类型错误。他通过创建数据类型为 long 的张量来演示这一点,这可以防止使用 torch mean 函数。然后,他解释了如何使用 x.type() 方法将张量转换为 mean 函数所需的浮点数 32。除了寻找张量的最小值、最大值、平均值和总和之外,讲师还设置了寻找位置最小值和最大值的挑战,这将在下一个视频中介绍。

  • 02:55:00 在本节中,解释了在 PyTorch 中使用 argmin 和 argmax 函数来查找张量的位置最小值和最大值。 argmin 函数返回张量中具有最小值的位置,而 argmax 函数返回张量中具有最大值的位置。当不需要定义张量的最小值或最大值而只定义这些值的位置时,这些函数很有用。此外,还引入了张量重塑、堆叠、压缩和解压缩的概念,这对于管理机器学习和深度学习中的形状不匹配非常有用。

第 4 部分

  • 03:00:00 在本节中,讲师解释了 PyTorch 中不同的张量操作方法,例如 reshape、view、stacking、squeeze、unsqueeze 和 permute。 Reshape 改变输入张量的形状,view 返回一个不同形状的张量视图,stacking 将多个张量垂直或水平组合在一起,squeeze 删除所有等于 1 的维度,unsqueeze 添加一个新的维度,大小为of 1. 最后,permute 交换张量的维度。讲师提供了代码示例来演示其中的每一种方法,并强调了张量形状操作在机器学习和深度学习中的重要性。

  • 03:05:00 在本节中,视频教程探讨了如何重塑和查看 PyTorch 张量。重塑需要与原始尺寸兼容,可以使用“重塑”或“查看”功能来完成。重要的是要注意“视图”与原始张量共享相同的内存。此外,'stack' 函数沿新维度连接张量,默认维度为零。建议用户经常保存他们的工作,因为在使用 Google CoLab 或任何其他形式的 Jupyter Notebooks 时可能会发生错误。

  • 03:10:00 本节讲师介绍PyTorch中squeeze和unsqueeze的概念。为了练习使用这些方法,我们鼓励观众查阅文档并尝试使用。讲师演示了从目标张量中删除单个维度的压缩方法。为了可视化这些操作期间对张量所做的更改,教师建议打印出每个更改并检查张量的大小。此外,讲师还强调了多次练习这些概念以熟悉它们的重要性。

  • 03:15:00 在本节中,讲师解释了使用“挤压”和“取消挤压”方法在 PyTorch 张量中添加和删除维度的概念。他通过在张量中添加和删除维度并打印它们的形状来演示这些方法的效果。讲师还介绍了“排列”方法,该方法按指定顺序重新排列目标张量的维度。他提供了一个示例,说明如何将排列用于图像,并讨论了将数据转化为深度学习中的数字表示的重要性。

  • 03:20:00 在本节中,讲师讲授如何使用 PyTorch 中的 permute() 方法重新排列张量的维度来排列张量。给出的例子是一个图像张量,其中颜色通道维度被移动到第一个索引。讲师解释说,置换张量只是一个视图,与原始张量共享相同的内存,通过更新原始张量中的值并看到复制到置换张量的相同值来演示。本节还介绍了 PyTorch 中的索引以及它与使用另一个流行的数值计算库 NumPy 进行索引的相似之处。

  • 03:25:00 在本节中,讲师介绍了如何导入火炬,并展示了如何创建小范围并以兼容的方式对其进行整形。然后,本教程深入研究了张量索引,并展示了如何在第一维和第二维上建立索引。本教程还揭示了使用分号选择所有目标维度的功能。本节以重新排列代码以获得数字 9 的挑战结束。

  • 03:30:00 在本节中,讲师演示了如何使用 PyTorch 从张量中选择特定值。这些示例涉及通过指定适当的索引值从张量的不同维度中选择元素。然后,讲师要求观众尝试索引张量以返回特定值。在下一节中,讲师将解释 PyTorch 张量如何与流行的科学数值计算库 NumPy 交互。由于 PyTorch 需要它,因此内置了一些功能以允许在 NumPy 数组和 PyTorch 张量之间轻松转换。

  • 03:35:00 在本节中,视频讨论了如何将数据从 NumPy 转换为 PyTorch 张量,反之亦然。从NumPy到PyTorch,在NumPy数组上使用了torch.fromNumPy方法,但是需要注意的是PyTorch默认的数据类型是float32,而NumPy默认的是float64。因此,转换时可能需要指定数据类型。同样重要的是要注意,当更改原始 NumPy 数组的值时,如果它是使用 fromNumPy 方法创建的,则它不会更改 PyTorch 张量的值。要从 PyTorch 转到 NumPy,可以使用方法 torch.tensor.numpy()。

  • 03:40:00 在本节中,视频讨论了如何在 PyTorch 和 NumPy 之间切换以及各自的默认数据类型。 PyTorch 的默认数据类型是 float32,而 NumPy 的默认数据类型是 float64,如果你改变 PyTorch 中的数据类型,NumPy 张量将反映原始数据类型。该视频还涵盖了神经网络中可重复性的概念以及使用随机种子来减少实验中的随机性。通过设置随机种子,随机性得到加强,计算机变得更具确定性,从而获得更可重现的结果。

  • 03:45:00 本节讲师介绍PyTorch中随机性和可重复性的概念。使用 torch.rand 函数创建两个随机张量,并打印和比较它们的值。讲师解释了随机种子的概念,它用于在 PyTorch 中创建可重现的随机性。随机种子值可以设置为一个选择的数值,比如42,然后用在各种随机函数中,得到有味道的随机性。需要注意的是,如果使用 torch.manual_seed 函数,它通常只适用于笔记本中的一个代码块。

  • 03:50:00 在视频的这一部分中,强调了可重复性在机器学习和深度学习中的重要性,并解释了随机种子的概念。手动种子是一种调整 PyTorch 随机张量的随机性并使其可重现的方法。推荐将 PyTorch 再现性文档作为学习再现性的重要资源。该部分还讨论了在 GPU 上运行 PyTorch 对象以加快计算速度以及如何访问 GPU,包括使用 Google Colab 获得免费 GPU,使用 Google Colab Pro 获得更快的 GPU 和更长的运行时间,以及使用 Google Colab Pro Plus 获得更多高级优势。

  • 03:55:00 在本节中,讲师解释了访问 GPU 以执行深度学习和机器学习任务的不同方法。选项包括使用 Google Colab、升级到 Colab Pro、使用您自己的 GPU 或使用 GCP、AWS 或 Azure 等云计算服务。讲师建议从 Google Colab 开始,它简单易用且免费。但是,如果您需要更多资源或想要运行更大的实验,您可能想要升级或使用您自己的 GPU 或云计算。讲师还展示了如何通过更改运行时类型并使用 PyTorch 检查 GPU 访问来在 Google Colab 中获取 GPU。

 

用于深度学习和机器学习的 PyTorch – 完整课程(第 5-10 部分的说明)


用于深度学习和机器学习的 PyTorch – 完整课程


第 5 部分

  • 04:00:00 在本节中,讲师解释了如何使用 PyTorch 检查 GPU 访问并设置与设备无关的代码。使用命令“torch.cuda.is_available()”,用户可以检查 PyTorch 是否可以访问 GPU。此外,为了运行 PyTorch,应将设备变量设置为使用 GPU(如果可用)或默认为 CPU。设置与设备无关的代码也很重要,它允许 PyTorch 在 CPU 或 GPU 上运行,具体取决于可用的,通过设置“args.device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')" 在 Python 脚本中。讲师强调,设置与设备无关的代码是使用 PyTorch 时的最佳实践,因为它允许代码在不同的设备上运行。

  • 04:05:00 在本节中,讲师讨论了使用 GPU 如何加快计算速度,以及如何有益于处理张量运算等数值计算的机器学习模型。要使用 GPU,需要将张量和模型传输给它,而 PyTorch 使用“to”方法可以轻松实现这一点。代码可以与设备无关,这样无论 GPU 是否可用,它都会运行。同样,如果需要,也可以将张量移回 CPU,为此可以使用 `cpu()` 方法。讲师强调设备问题是 PyTorch 中第三大最常见的错误,记住存储张量和模型的设备类型是一种很好的做法。

  • 04:10:00 在本节中,讲师讨论了在 GPU 上使用 PyTorch 的基础知识。他解释了如何在 CPU 和 GPU 之间切换,以及在 GPU 上使用带有张量的 NumPy 计算时如何避免错误。他还鼓励学习者通过一组练习和 learn.pytorch.io 上提供的额外课程来练习他们所学的知识。这些练习基于前面几节中介绍的内容,鼓励学习者使用 PyTorch 文档来完成这些练习。最后,讲师提供了有关如何通过设置两个屏幕和导入 torch 在 Colab 中进行这些练习的提示。

  • 04:15:00 在本节中,讲师讨论 PyTorch 课程中的练习和额外课程。这些练习是基于代码的,并且包括每个练习的模板。额外课程以阅读为主,教师建议花一个小时学习 PyTorch 基础教程、快速入门和张量部分,并观看“什么是张量?”视频。讲师还概述了 PyTorch 工作流程,其中包括准备数据并将其转换为张量、选择或构建预训练模型、选择损失函数并对其进行优化、构建训练循环、拟合模型、评估模型、试验并改进、保存和重新加载经过训练的模型。讲师鼓励学习者跟随代码和文档,搜索资源,再试一次,并在 PyTorch 论坛中提问。

  • 04:20:00 在视频的这一部分中,讲师首先在 Colab 中打开一个新笔记本并将其命名为“01 PyTorch Workflow”。他解释说,他们将专注于一起编码并创建 PyTorch 端到端工作流程,其中涉及数据准备和加载、在 PyTorch 中构建机器学习模型、训练模型、评估模型以及保存/加载模型.讲师还提到他们将使用 PyTorch 中的 nn 模块,其中包含 PyTorch 的所有神经网络构建块。

  • 04:25:00 在本节中,讲师通过探索神经网络中使用的计算图的基本构建块,讨论在 PyTorch 中使用 torch.nn。结合这些构建块,数据科学家和机器学习工程师可以构建各种类型的神经网络。讲师强调 PyTorch 工作流程第一步的重要性,即准备数据并将其加载到数字表示中,供模型学习模式。用于编码数据的数字表示类型取决于数据类型。第二步涉及构建神经网络以学习数字表示中的模式,然后将学习到的模式用于特定任务,例如图像识别或垃圾邮件分类。

  • 04:30:00 在本节中,讲师介绍了机器学习中的两部分博弈,其中涉及将数据转换为数值表示并构建模型以在该表示中找到模式。然后,讲师使用线性回归公式创建已知数据来展示此过程。公式的权重和偏差用作模型将通过查看不同示例来学习的参数。 Python 中的代码用于创建一系列数字,为变量 X 分配一个值,并创建一个等于权重乘以 X 加上偏差的 Y 公式。查看X和Y的长度和值,显示X和Y的前十个值。

  • 04:35:00 在本节中,讲师讨论了在机器学习中将数据拆分为训练集和测试集的重要性。他用大学课程和考试的类比来解释这个概念。训练集类似于所有课程材料,验证集类似于练习考试,测试集类似于期末考试。目标是实现泛化,使模型能够适应看不见的数据。讲师强调,正确拆分数据对于创建准确的模型至关重要。

  • 04:40:00 在PyTorch完整课程的这一部分中,讲师讨论了泛化在机器学习模型中的重要性以及训练和测试中常用的三个数据集:训练集、验证集和测试集。他还解释了用于这些集合的常见百分比分割,训练集通常有 60-80% 的数据,测试集有 10-20%。然后,讲师演示如何使用具有 X 和 Y 值的样本数据集创建训练集和测试集,并使用索引为每个拆分选择适当数量的样本。最后,他解释说,虽然在更复杂的数据集中经常有验证集的用例,但训练和测试集是最常用的。

  • 04:45:00 在本节中,讲师通过编写一个名为“plot predictions”的函数来强调可视化数据的重要性,该函数将用于比较训练和测试数据。该函数将 X 训练、Y 训练、X 测试、Y 测试和预测作为参数,然后使用 matplotlib 库使用散点图以蓝色绘制训练数据。然后使用相同的散点函数将测试数据绘制成绿色。该函数还检查是否有任何预测,如果有,也使用散点函数绘制它们。通过可视化数据,它变得更容易理解和解释。

  • 04:50:00 在视频的这一部分中,讲师讨论了训练和评估机器学习模型的过程。他们解释说,目标是在训练数据上训练模型,以便准确预测测试数据的值。他们使用一个简单的线性数据集来证明这一点,训练数据以蓝色绘制,测试数据以绿色绘制。然后,讲师介绍了线性回归的概念并为下一节做准备,他们将在下一节中构建用于线性回归的 PyTorch 模型。他们还为 Google Colab 提供了一些故障排除技巧。

  • 04:55:00 在这部分视频中,我们学习了如何使用纯 PyTorch 创建线性回归模型。讲师解释说 PyTorch 是建立在 nn.module 之上的,这就像 PyTorch 模型的乐高积木。 PyTorch 中的几乎所有内容都继承自 nn.module,并且模块可以包含其他模块,这使得构建复杂的神经网络变得容易。然后,讲师将引导我们完成使用 init 函数创建构造函数、使用 nn.parameter 创建权重参数以及使用 torch.rand 将其设置为随机参数的过程。讲师还解释了如何设置 requires_grad 和 dtype。

第 6 部分

  • 05:00:00 在本节中,讲师解释了如何使用 PyTorch 创建线性回归模型。他们首先为模型创建一个类,并使用权重和偏差参数对其进行初始化,这些参数在分配给模块属性时会自动添加到参数列表中。然后,他们创建了一种前向方法来定义模型中的计算,该方法基于线性回归公式。模型的目标是通过梯度下降更新随机参数来表示训练数据的模式,这是机器学习的前提。

  • 05:05:00 在本节中,讲师讨论了调整随机值以更好地表示数据中所需的权重和偏差值的过程,这是使用两种主要算法完成的:梯度下降和反向传播。 'requires grad equals true' 的使用被解释为通过使用模型完成的计算来跟踪梯度,将算法推向正确的方向。强调了面向对象编程的重要性和 PyTorch 在实现这些算法中的作用,并建议使用其他资源来帮助获得对代码的直觉。讲师还强调了一个事实,即虽然当前模型处理具有已知参数的简单数据集,但更复杂的数据集通常具有 nn 模块为我们定义的参数。

  • 05:10:00 在本节中,讲师解释了创建第一个 PyTorch 模型的主要收获。 PyTorch 中的每个模型都继承自 nn.modgable,并且应该覆盖 forward 方法来定义模型内部发生的计算。此外,当模型学习时,它会使用 torch.auto grad 模块通过梯度下降和反向传播更新其权重和偏差值。讲师建议查看成绩单中链接的两个视频,以全面了解此概念。此外,讲师还介绍了一些 PyTorch 模型构建要素,例如包含神经网络所需的所有构建块的 torch.nn 模块。

  • 05:15:00 本节讲师讲解PyTorch中的基础模块,包括torch.nn、torch.nn.module、torch.optim、torch.utils.dataset。 torch.nn.module 是所有神经网络模块的基类,需要覆盖 forward 方法,它定义了前向计算中发生的事情。 Torch.optim 包含优化模型值的算法,它从随机值开始并进行调整以更好地代表理想值。讲师还提到 PyTorch 备忘单是进一步探索图书馆的有用资源。

  • 05:20:00 在本节中,讲师为 PyTorch 工作流程添加了一些颜色和代码,并涵盖了用于创建数据集、构建和训练模型、优化模型参数、评估模型以及通过实验改进的重要 PyTorch 模块。然后,讲师演示如何通过创建线性回归模型的实例并使用点参数查看值张量来检查 PyTorch 模型的内容。讲师还设置了一个随机种子来创建具有一致值的参数。

  • 05:25:00 部分,我们了解了深度学习模型如何使用权重和偏差参数的随机值进行初始化。我们还了解了使用随机种子值来提高再现性的重要性。深度学习的基本前提是利用训练数据,通过梯度下降和反向传播,将这些随机值调整到尽可能接近理想值。在下一节中,视频将介绍如何使用模型的随机参数值进行预测。

  • 05:30:00 这部分,视频解释了测试 PyTorch 模型预测能力的过程。该模型的前向方法获取输入数据 X 并将其传递给模型以进行预测。该视频演示了如何通过输入由 10 个变量组成的 X test 并观察模型的输出 Y pred 来测试模型的预测能力。该视频还解决了在创建 PyTorch 模型期间可能发生的常见错误并提供了修复方法。

  • 05:35:00 在本节中,我们通过使用先前定义的 Ford 方法运行测试数据来查看模型的预测。这些预测似乎与理想的预测相去甚远。该代码还引入了 torch 推理模式,这是一种上下文管理器,用于在进行预测时禁用梯度跟踪,从而允许 PyTorch 跟踪更少的数据并更快地进行预测。虽然 torch no grad 可以做类似的事情,但推理模式比 no grad 有一些优势,如 PyTorch 文档和视频中提供的 Twitter 线程中所述。因此,推理模式是目前最受欢迎的推理方式。

  • 05:40:00 这部分,视频解释了在 PyTorch 中进行预测时使用 torch.inference_mode 上下文管理器的重要性,因为它确保模型处于推理模式而不是训练模式。该视频还强调了使用随机参数初始化模型可能会导致性能不佳,并提供了一些初始化选项,例如使用零值或从另一个模型传输参数。然而,该视频的主要重点是通过使用损失函数从未知参数转移到已知参数来训练模型,损失函数衡量模型的预测性能有多差。该视频指出,术语“损失函数”、“成本函数”和“标准”在机器学习中经常互换使用。

  • 05:45:00 在本节中,讲师介绍了损失函数的概念,该函数用于衡量模型的预测与理想输出相比的错误程度。讲师以测量红点和绿点之间的距离为例,解释如何计算损失函数。该视频还介绍了优化器的重要性,它考虑了模型的损失并调整其参数(例如权重和偏置值)以改进损失函数。本节最后解释说,无论是处理具有两个参数的模型还是具有数百万个参数的模型,无论是计算机视觉模型还是预测直线上的点的简单模型,损失函数和优化器的原理都是一样的。

  • 05:50:00 在 PyTorch for Deep Learning & Machine Learning 课程的这一部分,讲师解释了使用优化器将模型参数推向降低损失函数的值以提高模型准确性的重要性预测。 PyTorch 具有用于实现损失函数和优化器的内置功能,讲师重点介绍 L1 损失,也称为平均绝对误差,它衡量预测值和实际值之间的绝对差异。讲师提供了一个彩色图表来说明平均绝对误差,并展示了如何使用 PyTorch 的 NN 模块实现损失函数。训练模型的目标是最小化预测值和实际值之间的距离,进而最小化平均绝对误差的总值。

  • 05:55:00 在本节中,讲师讨论了优化器在机器学习中的作用,它与损失函数协同工作以调整模型参数,如权重和偏差,以最大限度地减少损失。 PyTorch 有 torch.optim,其中提供了各种优化算法,例如随机梯度下降 (SGD) 和 Adam。他们都随机调整模型参数以最小化损失,但这是针对特定问题选择最合适的参数的问题。大多数人选择 SGD,它从随机调整开始,然后继续朝着损失最小化的方向调整,直到无法进行进一步调整。优化器需要两个参数,params,或者优化器应该优化什么参数,以及学习率(LR),这是优化时要设置的最重要的超参数。

第 7 部分

  • 06:00:00 在本节中,讲师解释了什么是模型参数和超参数以及它们在深度学习过程中的作用。模型参数是模型设置的值,而超参数是由数据科学家或机器学习工程师设置的值。学习率是一个超参数,它的值决定了优化时参数变化的大小。小的学习率导致小的变化,而大的学习率导致大的变化。讲师还谈到了为特定问题选择合适的损失函数和优化器的重要性。最后,讲师继续解释在 PyTorch 中构建训练循环的过程。

  • 06:05:00 在本节中,讲师讨论了在 PyTorch 中构建训练循环和测试循环所需的步骤。第一步涉及多次循环数据以改进预测并通过向前传递模型来最大程度地减少损失。讲师解释说,前向传递是指数据通过模型的前向函数时,损失是通过将模型的预测与地面实况标签进行比较来计算的。然后讲师介绍了优化器,并解释了backward pass计算每个参数相对于损失的梯度,让优化器调整模型的参数,通过梯度下降来改善损失。讲师强调 PyTorch 实现了反向传播和梯度下降的数学,使那些数学背景有限的人更容易学习机器学习。

  • 06:10:00 本节讲师介绍了梯度下降的概念,梯度下降在机器学习中用于优化模型参数。以山丘为例,讲师解释了模型需要如何向坡度较小的方向移动才能到达山底,这代表零损失。然后,讲师继续编写一些运行梯度下降的代码,其中涉及设置轮数和使用“要求梯度等于真”参数将模型设置为训练模式。讲师还提到 pytorch 模型可以使用不同的模式,并鼓励观众尝试不同的设置。

  • 06:15:00 在视频的这一部分中,讲师讨论了用于训练 PyTorch 模型的前向传递的实现。前向传递涉及通过模型的前向函数传递数据以进行预测,然后使用 MAE 损失函数将其与实际训练值进行比较。还引入了 optimizer.zero_grad() 函数,它在向后计算损失并使用梯度下降更新模型参数之前将所有梯度设置为零。这些步骤对于理解模型如何学习以及将在课程的后续部分进一步优化和功能化至关重要。

  • 06:20:00 在本节中,讲师介绍了 PyTorch 中训练循环的五个主要步骤,包括正向传递、计算损失、将优化器梯度归零、执行反向传播以及通过梯度下降步进优化器.讲师指出,这些步骤的顺序有时可能不明确,但在反向传播后保持优化器步骤很重要。讲师还解释了为什么优化器梯度需要在每次迭代中归零以防止跨循环累积。讲师建议练习编写训练循环以更好地理解这些步骤,并提供歌曲和额外资源以供进一步学习。

  • 06:25:00 在视频的这一部分,演示者回顾了 PyTorch 中训练循环的步骤,包括前向传递、计算损失值、将优化器梯度归零以及对损失函数执行反向传播。训练循环帮助模型学习训练数据的模式,而测试循环评估未见数据的模式。演示者还解释了为什么我们将优化器梯度归零,并介绍了反向传播的概念,它计算损失函数的梯度。

  • 06:30:00 本节讲师讲解PyTorch深度学习中梯度和损失函数曲线的概念。通过将参数的“requires grad”设置为 true,PyTorch 能够跟踪每个参数的梯度并为所有参数创建损失函数曲线。反向传播和随后的梯度下降的目标是计算曲线的最低点,该点代表最小损失。讲师解释了机器学习中梯度的概念以及梯度下降如何与步进点一起工作。通过向后优化零梯度损失、优化步骤和需要梯度,PyTorch 在幕后完成了大部分工作,自动跟踪梯度并找到曲线底部。

  • 06:35:00 在本节中,讲师讨论了优化器和学习率。优化器获取模型参数并使用称为 torch autograd 的机制为每个参数创建曲线以进行自动梯度计算以更接近曲线底部。学习率决定了优化器在每一步中改变参数的大小,当我们接近收敛时采取更小的步骤。此外,讲师还介绍了训练模型所涉及的五个步骤,包括初始化模型、定义优化器、学习率、前向传播计算、反向传播和优化器步骤。最后,讲师提到这个循环可以转化为一个函数,这样有助于避免重复代码。

  • 06:40:00 在“PyTorch for Deep Learning & Machine Learning – Full Course”的这一部分,讲师强调了在 PyTorch 中编写训练循环的重要性,因为这是模型学习模式和数据的方式。该视频还为那些对数学背景感兴趣的人提供了有关反向传播和梯度下降的其他资源。讲师解释说,损失函数和优化器的选择将针对每个问题而定,并推荐 MAE 损失和 L1 损失用于回归问题,二元交叉熵损失用于分类问题。本节以仅使用两个参数和一个时期的模型演示训练循环结束。

  • 06:45:00 在本节中,讲师继续使用 PyTorch 训练机器学习模型,并展示损失函数如何随着模型参数通过梯度下降更新而下降。讲师强调,较低的损失值表示更好的模型进展,并且由于机器学习中的随机性而导致的值的微小差异不应引起关注。然后,讲师要求观众运行 100 个 epoch 的代码并进行预测,看看他们可以获得多低的损失值。最后,讲师讨论了测试的重要性,并预告了下一个关于编写测试代码的视频。

  • 06:50:00 在本节中,讲师讨论了使用 Google 和文档等外部资源研究和学习新主题的重要性。他们鼓励学习者尝试运行 100 个时期的训练代码,并检查权重和偏差值以及预测。然后,讲师继续解释测试代码和 model.eval() 函数的用途,该函数关闭模型中不需要测试的设置,例如 dropout 和 batch norm 层。他们还讨论了 torch.no_grad() 的目的以及它如何在测试期间关闭梯度跟踪,因为在那个阶段没有学习发生。最后,本节以在测试模式下编写模型的前向传递作为结束。

  • 06:55:00 在本节中,视频教授如何使用 PyTorch 中的模型零创建测试预测和计算测试损失。测试预测是在模型从未见过的测试数据集上做出的,就像评估一个人对他们从未见过的材料的知识一样。该视频解释了在评估之前不要让模型看到测试数据集以避免得到糟糕结果的重要性。该代码打印出损失以及每 10 个时期发生的情况,同时模型正在训练 100 个时期,并且可以看到损失随着每个时期而减少。该视频还讨论了模型精度的概念,稍后可能会打印出来。

第 8 部分

  • 07:00:00 在本节中,讲师回顾了上一个视频,在该视频中他们训练了一个模型并对一个简单的数据集进行了预测。然后,他们挑战观众寻找方法来提高模型将预测的红点与实际绿点对齐的能力,可能是通过对模型进行更长时间的训练。然后,讲师将代码重新运行 100 个以上的时期,并显示模型的测试损失和预测有显着改进。讲师强调,这种训练和评估模型的过程是使用 PyTorch 进行深度学习的基础,并将在课程的其余部分中使用。他们还讨论了使用空列表存储有用值来跟踪模型进度的重要性。

  • 07:05:00 在本节中,讲师解释了为什么跟踪损失值很重要,以及我们如何使用它们来监控模型的进度并在未来的实验中对其进行改进。提供的代码片段将 epoch 计数、当前损失值和当前测试损失值附加到不同的列表,以便稍后绘制它们。讲师演示了从列表生成的损失曲线图并解释了它们的重要性。理想的损失曲线应该从高处开始并随着时间的推移而下降,表示损失值在下降。

  • 07:10:00 在本节中,讲师解释了如何将损失值从 PyTorch 转换为 NumPy 以在 Matplotlib 中绘制它们。他表明将它们转换为 NumPy 是必要的,因为 Matplotlib 仅适用于 NumPy。他还解释了如何跟踪训练损失和测试损失曲线,并提到如果它们在某个点紧密匹配,则意味着模型正在收敛并且损失尽可能接近于零。然后,讲师遍历测试循环并解释说有必要通过模型传递测试数据,计算测试损失值,并打印出训练期间发生的情况,以跟踪正在发生的事情的价值。最后,他建议将所有这些步骤放入一个函数中,并提供了一个非官方的 PyTorch 优化循环歌曲来记住这些步骤。

  • 07:15:00 在本节中学习 - 在 PyTorch 中保存和加载模型的三种主要方法。第一个方法 torch.save 允许您以 Python 的 pickle 格式保存 PyTorch 对象。第二种方法 torch.load 允许您加载已保存的 PyTorch 对象。第三种方法 torch.nn.module.loadStateDict 允许您加载模型的保存字典或保存状态字典,我们将在下面的视频中探讨。这些方法对于保存和重用模型至关重要,尤其是在处理较大模型或需要与他人共享模型时。

  • 07:20:00 在本节中,讲师解释了状态字典的概念及其在 PyTorch 中的重要性。 PyTorch 将模型的重要参数存储在字典中,称为状态字典,该字典保存模型的状态,包括权重和偏差等可学习参数。讲师演示了如何通过使用 torch.save 和 torch.load 方法保存其状态字典来保存和加载 PyTorch 模型。此外,讲师向用户提供了一个额外的挑战,即阅读和理解保存整个模型而不仅仅是状态字典的利弊。最后,讲师分享了用于保存模型和创建名为 models 的文件夹的 PyTorch 代码。

  • 07:25:00 在这部分视频中,讲师演示了如何使用推荐的保存状态字典的方法来保存 PyTorch 模型。为模型命名,并使用 pathlib 库创建路径。路径准备好后,使用 torch.save() 函数保存模型状态字典,其中第一个参数是对象,第二个是模型要保存的路径。讲师展示了如何使用 ls 命令检查模型是否保存在 models 目录中。该视频还提供了将保存的模型下载到本地计算机或 Google Drive 的指南。此外,讲师鼓励观众通过提前阅读文档和使用 torch.load() 函数来学习如何加载保存的模型来挑战自己。

  • 07:30:00 本节讲师讲加载PyTorch模型以及如何使用torch dot load方法。该类先前保存的模型参数字典将作为状态卡片加载,本节介绍如何创建线性回归模型类的新实例并将保存的状态卡片加载到其中。 torch nn 模块的 load state deck 方法允许将状态字典直接加载到模型实例中,而 torch dot load 方法接受 F 并将其传递给保存前一个 state deck 的模型保存路径。

  • 07:35:00 在本节中,讲师将介绍如何在 PyTorch 中保存和加载模型。他们通过使用测试数据做出新的预测并使用等效的 equals 函数将它们与原始模型的预测进行比较来测试加载的模型。教师通过进行一组新的模型预测并再次测试等价性来解决模型不等价的问题。它们涵盖了保存和加载模型的主要方面,但建议查看教程以了解更多详细信息。讲师计划在接下来的几个视频中汇总到目前为止涵盖的所有步骤。

  • 07:40:00 在这部分视频中,讲师介绍了使用 PyTorch 进行深度学习的整个工作流程,包括导入 PyTorch、保存和重新加载模型以及创建与设备无关的代码,这允许代码在以下情况下使用 GPU可用,如果不可用则默认为 CPU。讲师鼓励观众停下来尝试自己重新创建代码,同时还提供指导和有用的提示。该视频还介绍了如何创建虚拟数据集和绘制数据点,这些数据将用于构建一个模型,该模型将学习如何根据蓝点预测绿点。

  • 07:45:00 在本节中,讲师演示如何使用 y 等于权重乘以特征加上偏差的线性回归公式创建数据。他们解释说,建立模型来估计这些值的原则保持不变,然后他们继续创建 x 和 y 特征,这些特征将用于预测训练和测试值。他们还将数据分成训练集和测试集,并绘制数据以可视化数据中的模式。

  • 07:50:00 在本节中,讲师介绍了为给定的线性虚拟数据构建 PyTorch 线性模型的概念。他们将 nn.module 子类化以创建线性回归模型并使用层初始化参数。 nn.Linear 层将特征作为输入和输出,并使用与线性回归模型相同的公式对输入数据应用线性变换。模型的输入和输出形状取决于数据,讲师强调在整个课程中将看到输入和输出特征的不同示例。

  • 07:55:00 在本节中,讲师解释了如何使用 PyTorch 中的线性层作为预先存在的层来创建模型。线性层是线性回归的一种形式,y 等于 x,a 转置加 b,in features,out features。通过子类化 nn.module,我们可以创建一个线性层并覆盖 forward 方法以通过线性层传递数据,线性层执行预定义的前向计算。 PyTorch 的 torch.nn 的强大之处在于它在幕后为我们创建了参数,而我们不必手动初始化它们。此外,讲师还讨论了线性层的不同名称,例如线性变换、探测层、全连接层、密集层和密集流。

第 9 部分

  • 08:00:00 在本节中,讲师讨论了 torch.nn 中可用的不同层,包括卷积层、池化层、填充层、归一化层、循环层、变换层、线性层和丢弃层。 PyTorch 为常见的深度学习任务提供了这些层的预构建实现。然后,该部分继续使用损失函数和优化器函数训练先前构建的 PyTorch 线性模型。优化器将优化模型的权重和偏差参数以最小化损失函数,损失函数衡量模型的错误程度。讲师为此任务设置了 L1 损失函数和 SGD 优化器。

  • 08:05:00 在视频的这一部分,讲师讨论了为优化器选择合适的学习率的重要性,因为步长太小或太大都会对模型的性能产生负面影响。还解释了编写训练循环所涉及的步骤,其中包括执行前向传递、计算损失值、将优化器归零、执行反向传播以及调整权重和偏差。此外,讲师建议使用 torch.manual_seed() 来确保可重现的结果,并提供代码以每 10 个 epoch 打印出训练损失和测试损失。

  • 08:10:00 在 PyTorch 课程的这一部分,讲师解释了如何为数据编写设备不可知代码,强调在同一设备上进行所有计算对于避免错误至关重要。模型和数据应该在同一个设备上,可以是 CPU 也可以是 CUDA。通过使用 X train 和 Y train 将训练和测试数据放在目标设备上,这将创建与设备无关的代码,从而在训练模型时提供更准确的结果。讲师还解释了如何使用 state decked 评估模型,证明估计的参数接近理想值。本节以用户做出和评估预测并将其绘制在原始数据上的挑战结束。

  • 08:15:00 在本节中,讲师讨论了将PyTorch模型转为评估模式并对模型从未见过的测试数据进行预测的重要性。他们引入了绘图预测函数来可视化模型的预测,但在尝试将 CUDA 设备类型张量转换为 NumPy 时遇到类型错误,因为 Matplotlib 使用 NumPy,而不是 PyTorch。他们通过先使用张量点 CPU 将张量复制到主机内存来解决此错误。讲师还鼓励观众使用路径模块保存和加载经过训练的模型,他们通过创建模型目录并为其设置模型路径来演示。

  • 08:20:00 在本节中,讲师解释了如何使用 Python 的路径库模块保存和加载 PyTorch 模型。首先,为 PyTorch 创建一个模型保存路径,扩展名为 .PTH。然后使用 torch save 方法保存模型状态字典。讲师指出,对于具有许多参数的模型,明确查看状态甲板可能不可行。为了加载保存的模型,使用加载状态 decked 方法将保存的状态字典加载到线性回归模型 V2 的新实例中,并传递保存的 PyTorch 对象的文件路径。还讨论了 PyTorch 的预构建线性层的使用以及在 forward 方法中调用它。

  • 08:25:00 在本节中,讲师通过使用 torch 推理模式对其进行评估,检查加载的模型是否与保存的模型具有相同的参数。然后,他们祝贺用户完成了从构建模型、训练模型、保存模型到重用的 PyTorch 工作流程。然后讲师指出,用户可以在 learnpytorch.io 的课程材料的书籍版本中找到练习和额外课程。他们还提供按部分编号的练习笔记本模板,可以在 PyTorch 深度学习 GitHub 存储库的附加和练习下找到。

  • 08:30:00 在本节中,讲师提供有关如何完成工作流练习和查找 PyTorch 课程额外资源的信息。他强调在查看任何示例解决方案之前亲自尝试练习的重要性。本节最后总结了所涵盖的 PyTorch 工作流程,其中包括准备好数据、将其转换为张量、构建或选择模型、选择损失函数和优化器、训练模型、进行预测以及评估模型。下一节重点介绍使用 PyTorch 进行神经网络分类,这是机器学习中最大的问题之一。讲师提供了在整个课程中获得帮助的资源,包括课程 GitHub 讨论页面和 PyTorch 文档。他还解释了什么是分类问题,并给出了预测电子邮件是否为垃圾邮件等示例。

  • 08:35:00 在 PyTorch 课程的这一部分,讲师讨论了深度学习中不同类型的分类问题。二元分类是指只有两个选项,例如垃圾邮件或非垃圾邮件。多类分类是指有两个以上的选项,例如将图像分类为寿司、牛排或比萨饼。多标签分类是指一个示例可以有多个标签,例如为维基百科文章分配标签。讲师提供了真实世界的示例,并对概念进行了透彻的解释。他还通过在二元分类问题中对狗和猫的图像进行分类以及在多类分类问题中对不同动物的图像进行分类来区分二元分类和多类分类。

  • 08:40:00 在本节中,讲师解释了神经网络分类模型的架构以及分类模型的输入和输出形状。他强调了数值输入对于机器学习模型的重要性,并解释了数值输入通常如何根据数据以不同的形式出现。他还讨论了为拟合和预测创建自定义数据的过程,并涵盖了神经网络分类建模所涉及的步骤。此外,讲师还解释了如何为分类模型设置损失函数和优化器、创建训练和评估循环、保存和加载模型、利用非线性以及评估分类模型。最后,他提供了一个示例,说明如何使用机器学习算法以数字方式表示食物照片及其预测。

  • 08:45:00 在这一节中,PyTorch for Deep Learning & Machine Learning 课程的讲师详细介绍了数值编码过程和输出格式。机器学习算法的输入是经过数字编码的图像,这些图像在预测概率方面有一些相关的输出。讲师指出,预测概率越接近 1,模型对其输出的信心就越大。此输出来自查看多个样本,并且可以调整算法和数据以改进这些预测。编码输出必须更改为人类可以理解的标签。此外,讲师还讨论了张量的形状,包括批量大小、颜色通道和高度/宽度。批量大小为 32 是一种常见的做法,形状可以根据要解决的问题而变化。

  • 08:50:00 在本节中,讲师解释了分类模型的架构,这是神经网络的示意图。输入层的形状由特征的数量决定,这些特征必须被编码为数字表示,而输出层通常是某个类别的预测概率。有些超参数必须由用户决定,例如隐藏层的数量、每个隐藏层的神经元和输出层的形状。讲师还提供了使用 PyTorch 创建层和神经元的代码示例,并指出形状会根据要解决的问题而有所不同。

  • 08:55:00 在本节中,讲师讨论了分类问题的组成部分,包括隐藏层激活、输出激活、损失函数和优化器,并提供了每个部分的示例。然后,讲师介绍了一个多类分类问题,并讨论了如何构建具有多个输出特征的架构。最后,讲师过渡到在 Google CoLab 上使用 PyTorch 编写代码,提醒听众所有代码都将保存在 GitHub 存储库中。讲师还强调了从数据开始任何机器学习问题的重要性。

第 10 部分

  • 09:00:00 在本节中,视频重点介绍如何使用 scikit-learn 库创建自定义数据集。导入 make circles 数据集并创建 1000 个样本,并添加一些噪声以实现随机性。打印了X和Y的长度,表示有1000个特征和标签样本。然后打印 X 和 Y 的前五个样本,表明数据已经是数字并且只有两个类:零和一个用于二进制分类。然后创建一个 pandas 数据框,其特征标记为 X1 和 X2,随机抽样被讨论为探索大型数据集的潜在有用方法。

  • 09:05:00 在课程的这一部分,讲师解释了玩具数据集,该数据集将用于练习在 PyTorch 中构建用于二元分类的神经网络。该数据集是使用 scikit-learn 生成的,由两个不同颜色的圆圈组成,代表二元分类问题的两个类别。讲师展示了数据可视化如何帮助理解数据集并为构建神经网络做准备。还讨论了问题的输入和输出形状,以及如何将数据集拆分为训练集和测试集,这将在课程的下一节中介绍。

  • 09:10:00 在本节中,讲师讨论了在机器学习中检查输入和输出形状的重要性,因为它们是常见的错误来源。他们演示了如何使用 NumPy 数组查看数据集的输入和输出形状,并将数据转换为 PyTorch 张量。将数据转换为张量并将其拆分为训练集和测试集的过程是机器学习中的关键步骤,即使对于像本例中使用的玩具数据集也是如此。讲师展示了如何导入 PyTorch 并确保使用的版本为 1.10,如何将 NumPy 数组转换为 PyTorch 张量,以及如何为数据创建训练集和测试集。

  • 09:15:00 在本节中,讲师演示了如何使用命令“torch.float”将 NumPy 数组中的数据转换为 PyTorch 默认类型的 float 32。不这样做可能会导致以后出现错误。然后,讲师展示了如何使用随机拆分将数据拆分为训练集和测试集,这是使用 scikit-learn 的“train_test_split”函数完成的。代码示例显示了在将特征和标签传递给函数时它们应该出现的顺序。讲师还解释了“test_size”参数的使用,其中给出的值是要用作测试数据的数据的百分比,以及充当随机种子的“random_state”参数。

  • 09:20:00 在本节中,视频介绍了如何使用 PyTorch 中的 Scikit-learn 库将数据拆分为训练集和测试集。火炬点手动种子设置为确保使用相同的随机拆分,确保它们与您要比较的相同。通过使用训练集和测试集的长度,视频解释了它们分别有 800 和 200 个样本,构成了他们将使用的数据集。下一步是创建并选择一个模型来对红点和蓝点进行分类。为实现这一目标,他们设置了不可知代码,包括设备,使其在加速器上运行,构建模型,定义损失,并使用 PyTorch 创建训练和测试循环,这将在下一节中进一步探讨。

  • 09:25:00 在本节中,我们将学习如何为 PyTorch 设置 GPU 并创建与设备无关的代码以确保代码在 CPU 上运行时不会出现任何问题。然后,我们继续通过对 nn.Module 进行子类化来构建模型,并遵循四个主要步骤。首先,我们创建一个子类化 nn.Module 的模型。其次,我们创建了两个能够处理数据形状的线性层。第三,我们定义了一个前向方法来概述模型的前向传递。第四,我们实例化模型类的实例并将其发送到目标设备。我们了解到我们的模型将用于使用神经网络分离红色和蓝色圆圈。

  • 09:30:00 在课程的这一部分,讲师讨论了如何定义能够处理输入特征的神经网络层。他继续解释说,每一层所需的特征数量取决于所使用的数据集。在此示例中,X 有两个特征,第一层定义为“n 线性”,其中 n 个特征等于二,而第二层定义有五个特征以帮助模型学习更多模式。讲师还解释说,第二层的输入特征应与前一层的输出特征相匹配,以避免形状不匹配错误。最后,他定义了一个 Ford 方法,该方法概述了 Ford pass 并返回第二层自我(将自我第一层和 X 作为输入)。

  • 09:35:00 在本节中,讲师解释了如何实例化模型类的实例并将其发送到目标设备。他展示了如何创建一个简单的多层神经网络,然后他在 TensorFlow playground 上使用两个输入特征进行演示,并将它们传递到一个具有五个神经元的隐藏层,该隐藏层馈送到具有一个输出特征的另一层。他将网络拟合到一些数据上,测试损失约为 50%,这意味着如果模型只是随机猜测,它会损失大约 0.5,因为只有两个类。

  • 09:40:00 在这部分视频中,讲师使用名为 Fig Jam 的白板工具直观地表示二元分类问题的神经网络。讲师解释说,在二元分类问题中,随机猜测将使您获得大约 50% 的准确率。神经网络是使用输入、隐藏单元和输出层构建的,讲师强调层的形状必须匹配。建议将 TensorFlow 游乐场作为探索和挑战自己在此类数据上构建神经网络的有趣方式。稍后,讲师讨论了使用两个线性层以更少的代码复制先前创建的神经网络,这些线性层能够处理输入特征并放大它们以改进网络的学习。

  • 09:45:00 在本节中,讲师演示了如何在 PyTorch 中使用 nn.Sequential 复制神经网络模型。通过使用 nn.Sequential,可以简化模型的代码,因为大部分代码都是在幕后实现的。讲师解释说,使用 nn.Sequential 进行简单、直接的操作比子类化更有效,如视频的前一部分所示。然而,子类化允许更复杂的操作,例如构建更复杂的前向传递。本节重点介绍 PyTorch 的灵活性和制作模型的不同方法。讲师还演示了通过模型传递数据和分析状态字典。

  • 09:50:00 在本节中,讲师演示了 PyTorch 如何在实现双层神经网络时在幕后自动创建权重和偏置参数。讲师强调了一个事实,即模型是用随机数实例化的,并且 PyTorch 会在反向传播和梯度下降过程中稍微更改这些值,以更好地拟合或表示数据。讲师还展示了具有许多特征的许多层的潜在复杂性,以及如何手动跟踪这些值会变得冗长。最后,讲师继续使用未经训练的模型进行预测,并强调了故障排除和可视化数据的重要性。

  • 09:55:00 在本节中,视频介绍了如何在创建深度学习模型后选择损失函数和优化器。所需的损失函数和优化器的类型通常取决于所处理数据集的性质。对于回归问题,平均绝对误差或均方误差可能是合适的。同时,对于分类问题,可以选择二元交叉熵或分类交叉熵。该视频最后指出,损失函数有助于衡量模型预测的准确性。

原因: