网站搜索

如何选择 Python 函数名称?

编程中最困难的决定之一是选择名称。程序员经常使用这个短语来强调选择 Python 函数名称的挑战。这可能有些夸张,但其中仍然有很多道理。

在命名 Python 函数和其他对象时,有一些不能违反的硬规则。还有其他约定和最佳实践,当您违反它们时,它们不会引发错误,但在编写Pythonic代码

阅读更多 →

通过简单示例解释 Python 的 zip() 函数

Python 中的 zip() 函数是一个巧妙的工具,它允许您将多个列表或其他可迭代对象(如元组、集合甚至字符串)组合成一个可迭代元组。可以将其想象为夹克上将两侧连接在一起的拉链。

在本指南中,我们将通过简单实用的示例探索 zip() 函数的详细信息,帮助您了解如何有效地使用它。

zip() 函数如何工作?

zip() 函数根据多个可迭代对象(如列表)的位置对元素进行配对。这意味着

阅读更多 →

Python 中的部分函数:开发人员指南

了解如何使用部分函数来简化 Python 代码,以创建更灵活、可重用且简洁的函数调用。

在 Python 中,函数通常需要多个参数,您可能会发现自己重复地为某些参数传递相同的值。这就是部分函数可以提供帮助的地方。

Python 的内置 functools 模块允许您创建部分函数。创建部分函数允许您修复函数的一些参数并创建一个新的、更简洁的版本。

本教程将教您如何有效地使用部分函数,使您的代码更干净、更高效。

什么是偏函数,为什么要使用它们

阅读更多 →

如何使用 Keras 函数式 API 进行深度学习

Keras Python 库使创建深度学习模型变得快速、轻松。

顺序 API 允许您针对大多数问题逐层创建模型。它的局限性在于它不允许您创建共享层或具有多个输入或输出的模型。

Keras 中的函数式 API 是创建模型的另一种方法,它提供了更大的灵活性,包括创建更复杂的模型。

在本教程中,您将了解如何使用 Keras 中更灵活的功能 API 来定义深度学习模型。

完成本教程后,您将了解:

  • 顺序 API 和功能 API 之间的区别。
  • 如何使用函数式 API 定义简单的多层感知器、卷积神经网络和循环神经网络模型。
  • 如何定义具有共享层和多个输入和输出的更复杂的模型。

使用我的新书《使用 Python 进行深度学习》启动您的项目,其中包括分步教程以及适用于所有内容的Python 源代码文件例子。

让我们开始吧。

整流线性单元 (ReLU) 的简要介绍

在神经网络中,激活函数负责将节点的加权输入总和转换为节点的激活或该输入的输出。

修正线性激活函数或简称ReLU是分段线性函数,如果输入为正则直接输出,否则输出零。它已成为许多类型神经网络的默认激活函数,因为使用它的模型更容易训练并且通常可以获得更好的性能。

在本教程中,您将发现深度学习神经网络的修正线性激活函数。

完成本教程后,您将了解:

  • 由于梯度消失问题,sigmoid 和双曲正切激活函数不能在多层网络中使用。
  • 修正的线性激活函数克服了梯度消失问题,使模型学习得更快、表现更好。
  • 开发多层感知器和卷积神经网络时,修正线性激活是默认激活。

使用我的新书《更好的深度学习》启动您的项目,其中包括分步教程和所有示例的Python 源代码文件。

让我们开始吧。

如何使用 ReLU 解决梯度消失问题

梯度消失问题是训练深度神经网络时可能遇到的不稳定行为的示例之一。

它描述了深度多层前馈网络或循环神经网络无法将有用的梯度信息从模型的输出端传播回模型输入端附近的层的情况。

结果是多层模型通常无法在给定数据集上学习,或者多层模型过早收敛到较差的解决方案。

人们已经提出并研究了许多修复方法和解决方法,例如替代权重初始化方案、无监督预训练、分层训练和梯度下降的变化。也许最常见的变化是使用已成为新默认值的修正线性激活函数,而不是 20 世纪 90 年代末和 2000 年代默认的双曲正切激活函数。

在本教程中,您将了解如何在训练神经网络模型时诊断梯度消失问题,以及如何使用替代激活函数和权重初始化方案来修复该问题。

完成本教程后,您将了解:

  • 梯度消失问题限制了具有经典流行激活函数(例如双曲正切)的深度神经网络的发展。
  • 如何使用 ReLU 和 He 权重初始化修复深度神经网络多层感知器进行分类。
  • 如何使用 TensorBoard 诊断梯度消失问题并确认 ReLU 对改善模型中梯度流

    阅读更多 →

用于训练深度学习神经网络的损失和损失函数

神经网络使用随机梯度下降进行训练,并要求您在设计和配置模型时选择损失函数。

有许多损失函数可供选择,了解该选择什么,甚至知道什么是损失函数以及它在训练神经网络时扮演的角色可能具有挑战性。

在这篇文章中,您将发现损失和损失函数在训练深度学习神经网络中的作用,以及如何为您的预测建模问题选择正确的损失函数。

读完这篇文章,你会知道:

  • 神经网络使用优化过程进行训练,该过程需要损失函数来计算模型误差。
  • 最大似然法提供了一个在训练神经网络和机器学习模型时选择损失函数的框架。
  • 交叉熵和均方误差是训练神经网络模型时使用的两种主要损失函数。

使用我的新书《更好的深度学习》启动您的项目,其中包括分步教程和所有示例的Python 源代码文件。

让我们开始吧。

阅读更多 →

训练深度学习神经网络时如何选择损失函数

深度学习神经网络使用随机梯度下降优化算法进行训练。

作为优化算法的一部分,必须重复估计模型当前状态的误差。这需要选择一个误差函数,通常称为损失函数,可用于估计模型的损失,以便更新权重以减少下一次评估的损失。

神经网络模型从示例中学习从输入到输出的映射,并且损失函数的选择必须与特定预测建模问题的框架相匹配,例如分类或回归。此外,输出层的配置也必须适合所选的损失函数。

在本教程中,您将了解如何针对给定的预测建模问题为深度学习神经网络选择损失函数。

完成本教程后,您将了解:

  • 如何配置均方误差模型和回归问题的变体。
  • 如何配置用于二元分类的交叉熵和铰链损失函数的模型。
  • 如何配置用于多类分类的交叉熵和 KL 散度损失函数的模型。

使用我的新书《更好的深度学习》启动您的项目,其中包括分步教程和所有示例的Python 源代码文件。

让我们开始吧。

阅读更多 →

如何在 Keras 中从头开始开发一维生成对抗网络

生成对抗网络(简称 GAN)是一种深度学习架构,用于训练强大的生成器模型。

生成器模型能够生成新的人工样本,这些样本可能来自现有的样本分布。

GAN 由生成器模型和判别器模型组成。生成器负责从域中生成新样本,鉴别器负责分类样本是真实的还是假的(生成的)。重要的是,判别器模型的性能用于更新判别器本身和生成器模型的模型权重。这意味着生成器实际上从未看到来自域的示例,并且根据鉴别器的执行情况进行调整。

这是一种需要理解和训练的复杂模型。

更好地理解 GAN 模型的性质以及如何训练它们的一种方法是从头开始开发一个用于非常简单的任务的模型。

一维函数是一个简单的任务,它为从头开始开发简单的 GAN 提供了良好的背景。这是因为真实的和生成的样本都可以被绘制和目视检查,以了解所学到的内容。简单的函数也不需要复杂的神经网络模型,这意味着架构上使用的特定生成器和鉴别器模型可以很容易理解。

在本教程中,我们将选择一个简单的一维函数,并将其用作使用 Keras 深度学习库从头开始开发和评估生成对抗网络的基础。

完成本教

阅读更多 →

如何编写 GAN 训练算法和损失函数的代码

生成对抗网络(Generative Adversarial Network,简称 GAN)是一种用于训练生成模型的架构。

该架构由两个模型组成。我们感兴趣的生成器,以及用于辅助训练生成器的判别器模型。最初,生成器和鉴别器模型都是作为多层感知器(MLP)实现的,尽管最近,这些模型被实现为深度卷积神经网络。

了解 GAN 的训练方式以及准确理解和实现生成器和判别器模型的损失函数可能具有挑战性。

在本教程中,您将了解如何实现生成对抗网络训练算法和损失函数。

完成本教程后,您将了解:

  • 如何实现生成对抗网络的训练算法。
  • 判别器和生成器的损失函数如何工作。
  • 如何在实践中实现判别器和生成器模型的权重更新。

使用我的新书《使用 Python 生成对抗网络》启动您的项目,其中包括分步教程和Python 源代码文件所有的例子。

让我们开始吧。