使用 Python 和 Keras 的第一个深度学习项目分步指南

Keras 是一个强大且易于使用的免费开源 Python 库,用于开发和评估深度学习模型

它是 TensorFlow 库的一部分,允许您仅用几行代码即可定义和训练神经网络模型。

在本教程中,您将学习如何使用 Keras 在 Python 中创建您的第一个深度学习神经网络模型。

快速开始您的项目,阅读我的新书 Deep Learning With Python,其中包含分步教程和所有示例的Python 源代码文件。

让我们开始吧。

  • 更新于 2017 年 2 月:更新了预测示例,以便在 Python 2 和 3 中都可以进行四舍五入。
  • 更新于 2017 年 3 月:更新了最新版本的 Keras 和 TensorFlow 的示例。
  • 2018 年 3 月更新:添加了下载数据集的备用链接。
  • 更新于 2019 年 7 月:扩展并添加了更多有用的资源。
  • 更新于 2019 年 9 月:更新了 Keras v2.2.5 API。
  • 更新于 2019 年 10 月:更新了 Keras v2.3.0 API 和 TensorFlow v2.0.0。
  • 更新于 2020 年 8 月:更新了 Keras v2.4.3 和 TensorFlow v2.3。
  • 更新于 2021 年 10 月:`predict_class` 语法已弃用。
  • 更新于 2022 年 6 月:更新为现代 TensorFlow 语法。
Tour of Deep Learning Algorithms

分步用 Keras 在 Python 中开发你的第一个神经网络
照片由 Phil Whitehouse 拍摄,部分权利保留。

Keras 教程概述

代码量不多,但我们会慢慢讲解,以便您将来知道如何创建自己的模型。

本教程将教您以下步骤:

  1. 加载数据
  2. 定义 Keras 模型
  3. 编译 Keras 模型
  4. 拟合 Keras 模型
  5. 评估 Keras 模型
  6. 整合所有内容
  7. 进行预测

此 Keras 教程做了一些假设。您需要具有:

  1. 已安装并配置的 Python 2 或 3
  2. 已安装并配置的 SciPy(包括 NumPy)
  3. 已安装并配置的 Keras 和后端(Theano 或 TensorFlow)

如果您需要有关环境的帮助,请参阅教程

创建一个名为 keras_first_network.py 的新文件,并在其中键入或复制粘贴代码。

Python 深度学习需要帮助吗?

参加我的免费为期两周的电子邮件课程,发现 MLP、CNN 和 LSTM(附代码)。

立即点击注册,还将免费获得本课程的 PDF 电子书版本。

1. 加载数据

第一步是定义您打算在此教程中使用的函数和类。

您将使用 NumPy 库加载数据集,并使用 Keras 库中的两个类来定义模型。

下面列出了所需的导入。

现在我们可以加载我们的数据集了。

在本 Keras 教程中,您将使用 Pima 印第安人糖尿病发病数据集。这是来自 UCI 机器学习仓库的标准机器学习数据集。它描述了 Pima 印第安人的患者病历数据以及他们是否在五年内出现糖尿病发作。

因此,这是一个二元分类问题(糖尿病发作记为 1,未发作记为 0)。描述每位患者的所有输入变量都是数值型的。这使得它可以直接与需要数值输入和输出值的神经网络一起使用,并且是我们第一个 Keras 神经网络的理想选择。

数据集可在此处获取:

下载数据集并将其放在您的本地工作目录中,与您的 Python 文件相同的位置。

将其保存为文件名:

查看文件内容,您应该会看到类似以下内容的数据行:

现在您可以使用 NumPy 函数 loadtxt() 将文件加载为数字矩阵。

有八个输入变量和一个输出变量(最后一列)。您将学习一个模型来将输入变量(X)的行映射到输出变量(y),这通常概括为*y = f(X)*。

变量可总结如下:

输入变量(X)

  1. 怀孕次数
  2. 口服葡萄糖耐量测试 2 小时血浆葡萄糖浓度
  3. 舒张压(毫米汞柱)
  4. 肱三头肌皮褶厚度(毫米)
  5. 2 小时血清胰岛素(微单位/毫升)
  6. 体重指数(体重 kg / (身高 m)^2)
  7. 糖尿病遗传函数
  8. 年龄(岁)

输出变量(y)

  1. 类别变量(0 或 1)

CSV 文件加载到内存后,您可以将数据列拆分为输入变量和输出变量。

数据将存储在二维数组中,其中第一个维度是行,第二个维度是列,例如:[行, 列]。

您可以使用标准的 NumPy 切片运算符或“:”来选择列的子集,将数组拆分为两个数组。您可以通过切片 0:8 选择从索引 0 到索引 7 的前八列。然后,您可以通过索引 8 选择输出列(第九个变量)。

现在您已准备好定义您的神经网络模型。

注意: 数据集有九列,范围 0:8 将选择从 0 到 7 的列,在索引 8 处停止。如果您对此不熟悉,可以在这篇帖子中了解更多关于数组切片和范围的知识。

2. 定义 Keras 模型

Keras 中的模型定义为一系列层。

我们创建一个*Sequential 模型*,并逐一添加层,直到我们对网络架构满意为止。

首先要确保输入层具有正确的输入特征数。这可以在创建第一层时通过 input_shape 参数指定,并将其设置为 (8,),表示将八个输入变量作为向量输入。

我们如何知道层的数量和类型?

这是一个棘手的问题。有一些启发式方法供您使用,而且通常最佳的网络结构是通过反复试验找到的(我在这里解释得更详细)。通常,您需要一个足够大的网络来捕捉问题的结构。

在此示例中,让我们使用一个具有三层的全连接网络结构。

全连接层使用 Dense 类定义。您可以将层中的神经元或节点数量指定为第一个参数,并使用 activation 参数指定激活函数。

此外,您将在前两层使用*整流线性单元激活函数*,在输出层使用 Sigmoid 函数。

过去,Sigmoid 和 Tanh 激活函数是所有层的首选。如今,使用 ReLU 激活函数可以获得更好的性能。在输出层使用 sigmoid 可以确保您的网络输出在 0 到 1 之间,并且可以轻松地映射到类别 1 的概率,或使用默认阈值 0.5 映射到类别 0 或 1 的硬分类。

您可以将它们组合起来,逐一添加层:

  • 模型期望输入具有 8 个变量的行(input_shape=(8,) 参数)。
  • 第一个隐藏层有 12 个节点,使用 relu 激活函数。
  • 第二个隐藏层有 8 个节点,使用 relu 激活函数。
  • 输出层有 1 个节点,使用 sigmoid 激活函数。

注意: 这里最令人困惑的是,模型输入的形状作为参数设置在第一个隐藏层上。这意味着添加第一个 Dense 层的代码行同时做了两件事:定义输入层(可见层)和第一个隐藏层。

3. 编译 Keras 模型

模型定义完成后,*您可以编译它*。

编译模型在后台使用高效的数值库(所谓的后端),如 Theano 或 TensorFlow。后端会自动选择表示网络以进行训练和进行预测的最佳方式,以在您的硬件(如 CPU、GPU 或分布式系统)上运行。

编译时,您必须指定一些在训练网络时必需的附加属性。请记住,训练网络意味着找到映射数据集中的输入到输出的最佳权重集。

您必须指定用于评估权重集的损失函数、用于搜索网络权重的优化器,以及在训练期间您希望收集和报告的任何可选指标。

在本例中,使用交叉熵作为 loss 参数。此损失适用于二元分类问题,在 Keras 中定义为“**binary_crossentropy**”。您可以在此处了解有关选择损失函数的更多信息:

我们将 optimizer 定义为高效的随机梯度下降算法“**adam**”。这是一种流行的梯度下降版本,因为它会自动调整自身,并在各种问题中都能取得良好的效果。要了解有关随机梯度下降的 Adam 版本的更多信息,请参阅以下帖子:

最后,由于这是一个分类问题,您将通过 metrics 参数收集和报告分类准确率。

4. 拟合 Keras 模型

您已经定义了模型并对其进行了编译,为高效计算做好准备。

现在是时候在一些数据上执行模型了。

您可以通过在模型上调用 fit() 函数来训练或拟合模型。

训练过程会经过多个 epoch,每个 epoch 分成若干个 batch。

  • Epoch:遍历训练数据集中的所有行一次
  • Batch:在 epoch 中,模型在权重更新之前考虑的一个或多个样本

一个 epoch 包含一个或多个 batch,具体取决于选择的 batch 大小,并且模型会训练多个 epoch。有关 epoch 和 batch 之间区别的更多信息,请参阅以下帖子:

您必须使用 epochs 参数指定训练过程将运行的 epoch(迭代)数量。您还必须设置在每个 epoch 中更新模型权重之前考虑的数据集行数,这称为 batch_size,并使用 batch_size 参数设置。

此问题将运行较少数量的 epoch(150 次),并使用相对较小的 batch_size(10)。

这些配置可以通过反复试验来选择。您希望模型训练足够长的时间,以便它能学习到输入数据行到输出分类的良好(或足够好)的映射。模型总会存在一些误差,但对于给定的模型配置,误差量会在某个点趋于平稳。这被称为模型收敛。

这是在您的 CPU 或 GPU 上进行工作的地方。

此示例不需要 GPU,但如果您有兴趣了解如何以低廉的云端成本在 GPU 硬件上运行大型模型,请参阅以下帖子:

5. 评估 Keras 模型

我们已经在整个数据集上训练了神经网络,现在可以在相同数据集上评估网络的性能。

这只能让您了解您对数据集的建模程度(例如,训练准确率),但无法了解算法在未见过的数据上的表现如何。为简洁起见,这里这样处理,但理想情况下,您可以将数据分成训练集和测试集,用于训练和评估您的模型。

您可以使用 evaluate() 函数在训练数据集上评估您的模型,并将用于训练模型的相同输入和输出传递给它。

这将为每个输入和输出对生成一个预测,并收集分数,包括平均损失和您配置的任何指标,例如准确率。

evaluate() 函数将返回一个包含两个值的列表。第一个是模型在该数据集上的损失,第二个是模型在该数据集上的准确率。您只对报告准确率感兴趣,因此可以忽略损失值。

6. 整合所有内容

您刚刚了解了如何轻松创建您的第一个 Keras 神经网络模型。

让我们将所有内容整合到一个完整的代码示例中。

您可以将所有代码复制到您的 Python 文件中,并将其保存为“keras_first_network.py”,放在与数据文件“pima-indians-diabetes.csv”相同的目录中。然后,您可以从命令行(命令提示符)中像这样运行 Python 文件作为一个脚本:

运行此示例,您应该会看到关于 150 个 epoch 的消息,打印出损失和准确率,然后是训练好的模型在训练数据集上的最终评估。

在我的工作站上运行 CPU 版本大约需要 10 秒钟。

理想情况下,您希望损失降至零,准确率升至 1.0(即 100%)。对于任何非平凡的机器学习问题,这都是不可能实现的。相反,您的模型中总会存在一些误差。目标是选择一个模型配置和训练配置,为给定的数据集实现尽可能低的损失和最高的准确率。

注意:如果您尝试在 IPython 或 Jupyter notebook 中运行此示例,可能会遇到错误。

原因是训练期间的输出进度条。您可以轻松地通过在调用 fit()evaluate() 函数时设置 verbose=0 来关闭它们;例如:

注意:您的结果可能因算法或评估程序的随机性、或数值精度差异而异。可以尝试运行几次示例并比较平均结果。

你得到了什么分数?
请在下方评论区发布你的结果。

神经网络是随机算法,这意味着相同的算法在相同的数据上每次运行时都可以训练出具有不同技能的模型。这是一个特性,而不是一个 bug。您可以在以下帖子中了解更多信息:

模型性能的差异意味着,为了合理地估算模型性能,您可能需要多次拟合模型并计算准确率分数的平均值。有关评估神经网络的这种方法,请参阅以下帖子:

例如,以下是运行该示例五次的准确率分数:

您可以看到,所有准确率分数都在 77% 左右,平均值为 76.924%。

7. 进行预测

我收到的头号问题是:

“训练完模型后,如何使用它来对新数据进行预测?”

很好的问题。

您可以改编上述示例,并使用它来对训练数据集生成预测,假装它是您未见过的新数据集。

进行预测就像在模型上调用 predict() 函数一样简单。您在输出层使用了 sigmoid 激活函数,因此预测将是 0 到 1 之间的概率。对于此分类任务,您可以轻松地将其转换为清晰的二元预测,方法是进行四舍五入。

例如

或者,您可以将概率转换为 0 或 1,直接预测清晰的类别;例如:

下面的完整示例对数据集中的每个示例进行预测,然后打印前五个示例的输入数据、预测类别和期望类别。

运行示例时不会显示进度条,因为 verbose 参数已设置为 0。

拟合模型后,会为数据集中的所有示例进行预测,并打印前五个示例的输入行和预测类别值,并与期望的类别值进行比较。

您可以看到大多数行都得到了正确预测。事实上,根据上一节对模型性能的估算,您可以预期约 76.9% 的行得到正确预测。

如果您想了解更多关于如何使用 Keras 模型进行预测的信息,请参阅以下帖子:

Keras 教程总结

在这篇文章中,您了解了如何使用强大的 Keras Python 深度学习库创建您的第一个神经网络模型。

具体来说,您学习了使用 Keras 创建神经网络或深度学习模型的六个关键步骤,包括:

  1. 如何加载数据
  2. 如何在 Keras 中定义神经网络
  3. 如何使用高效的数值后端编译 Keras 模型
  4. 如何训练模型
  5. 如何评估模型
  6. 如何使用模型进行预测

您对 Keras 或本教程有任何疑问吗?
请在评论中提问,我将尽力回答。

Keras 教程扩展

做得好,您已成功使用 Keras 深度学习库在 Python 中开发了您的第一个神经网络。

本节提供了一些您可能想探索的教程扩展。

  • 调优模型。 更改模型或训练过程的配置,看看是否能提高模型性能,例如,达到高于 76% 的准确率。
  • 保存模型。将教程更新为将模型保存到文件,然后稍后加载它并使用它进行预测(参见本教程)。
  • 总结模型。更新教程以总结模型并创建模型层的图(参见本教程)。
  • 分离训练和测试数据集。将加载的数据集分为训练集和测试集(基于行分割),然后使用一个集合来训练模型,另一个集合来估算模型在新数据上的性能。
  • 绘制学习曲线。fit() 函数返回一个历史对象,总结了每个 epoch 结束时的损失和准确率。将这些数据绘制成折线图,称为学习曲线参见本教程)。
  • 学习新数据集。更新教程以使用不同的表格数据集,可能来自UCI 机器学习仓库
  • 使用函数式 API。更新教程以使用 Keras 函数式 API 来定义模型(参见本教程)。

进一步阅读

您是否正在寻找更多使用 Python 和 Keras 的深度学习教程?

可以看看这些:

相关教程

书籍

API

您做得怎么样?您对深度学习有任何疑问吗?
请在下面的评论中提问,我会尽力提供帮助。

1,172 条对*用 Keras 和 Python 实现你的第一个深度学习项目,一步一步来*的回复

  1. Saurav 2016 年 5 月 27 日晚上 11:08 #

    输入层没有激活函数,但模型的第一层仍然提到了 activation="relu"。为什么?

    • Jason Brownlee 2016 年 5 月 28 日上午 6:32 #

      嗨 Saurav,

      这里网络中的第一层严格来说是隐藏层,因此它有一个激活函数。

      • sam Johnson 2016 年 12 月 21 日凌晨 2:44 #

        但你为什么把它设为隐藏层呢?输入层通常不表示为隐藏层,对吗?

        • Jason Brownlee 2016 年 12 月 21 日 上午 8:41 #

          你好 Sam,

          请注意这行代码:

          它做了几件事。

          • 它定义了输入层有 8 个输入。
          • 它定义了一个具有 12 个神经元的隐藏层,该层连接到使用 relu 激活函数的输入层。
          • 它使用均匀随机数样本初始化所有权重。

          这有帮助吗?

          • Pavidevi 2017 年 5 月 17 日 上午 2:31 #

            嗨,Jason,

            你使用了两个不同的激活函数,那么我们如何知道哪个激活函数适合模型呢?

          • Jason Brownlee 2017 年 5 月 17 日 上午 8:38 #

            抱歉,我不明白你的问题。

          • Marco Cheung 2017 年 8 月 23 日 上午 12:51 #

            嗨,Jason,

            我对深度学习和机器学习很感兴趣。你提到“它定义了一个具有 12 个神经元的隐藏层,该层连接到使用 relu 激活函数的输入层。” 我想知道如何确定神经元的数量以实现模型的高准确率?

            非常感谢!!!

          • Jason Brownlee 2017 年 8 月 23 日 上午 6:55 #

            通过试错法。我们无法通过解析来指定“最佳”神经元数量。我们必须进行测试。

          • Ramzan Shahid 2017 年 11 月 10 日 上午 4:32 #

            先生,感谢您的教程。您是否愿意做一个关于通过神经网络模型进行股票数据预测以及在任何股票数据上训练的教程?如果您有这方面的教程,请分享链接。谢谢!

          • Jason Brownlee 2017 年 11 月 10 日 上午 10:39 #

            鉴于证券价格的随机游走假设,我不太愿意发布关于股票市场预测的教程。
            https://machinelearning.org.cn/gentle-introduction-random-walk-times-series-forecasting-python/

          • Dhara Bhavsar 2019 年 8 月 28 日 下午 9:54 #

            你好,

            我想更多地了解激活函数。它是如何工作的?有多少种激活函数?使用不同的激活函数会对模型的输出产生多大的影响?

            我还想了解隐藏层。隐藏层的大小如何影响模型?

          • Jason Brownlee 2019 年 8 月 29 日 上午 6:09 #

            在本教程中,我们在隐藏层中使用 relu,在此处了解更多信息。
            https://machinelearning.org.cn/rectified-linear-activation-function-for-deep-learning-neural-networks/

            层的大小会影响模型的容量,在此处了解更多信息。
            https://machinelearning.org.cn/how-to-control-neural-network-model-capacity-with-nodes-and-layers/

        • Ryder Carter 2024 年 8 月 16 日 上午 9:01 #

          > model.add(Dense(12, input_shape = (8,), activation = 'relu'))
          为什么输入层有 12 个神经元,而只有 8 个输入变量?输入层不应该有与变量数量相同的神经元,以便每个输入进入一个神经元吗?我有什么误解吗?

      • dhani 2018 年 6 月 28 日 上午 2:44 #

        你好,如何使用 cnn 对 mhd 图像进行像素分类?

      • Tanmay Kulkarni 2020 年 2 月 11 日 上午 5:50 #

        你好!我想知道是否有办法在每次更新后知道所有权值的值?

    • BlackBookKeeper 2018 年 8 月 18 日 下午 10:15 #

      runfile(‘C:/Users/Owner/Documents/untitled1.py’, wdir=’C:/Users/Owner/Documents’)
      回溯(最近一次调用)

      File “”, line 1, in
      runfile(‘C:/Users/Owner/Documents/untitled1.py’, wdir=’C:/Users/Owner/Documents’)

      File “C:\Users\Owner\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”, line 705, in runfile
      execfile(filename, namespace)

      File “C:\Users\Owner\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”, line 102, in execfile
      exec(compile(f.read(), filename, 'exec'), namespace)

      File “C:/Users/Owner/Documents/untitled1.py”, line 13, in
      model.add(Dense(12, input_dim=8, activation=’relu’))

      File “C:\Users\Owner\Anaconda3\lib\site-packages\keras\engine\sequential.py”, line 160, in add
      name=layer.name + ‘_input’)

      File “C:\Users\Owner\Anaconda3\lib\site-packages\keras\engine\input_layer.py”, line 177, in Input
      input_tensor=tensor)

      File “C:\Users\Owner\Anaconda3\lib\site-packages\keras\legacy\interfaces.py”, line 91, in wrapper
      return func(*args, **kwargs)

      File “C:\Users\Owner\Anaconda3\lib\site-packages\keras\engine\input_layer.py”, line 86, in __init__
      name=self.name)

      File “C:\Users\Owner\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py”, line 515, in placeholder
      x = tf.placeholder(dtype, shape=shape, name=name)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\ops\array_ops.py”, line 1530, in placeholder
      return gen_array_ops._placeholder(dtype=dtype, shape=shape, name=name)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\ops\gen_array_ops.py”, line 1954, in _placeholder
      name=name)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\op_def_library.py”, line 767, in apply_op
      op_def=op_def)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\ops.py”, line 2508, in create_op
      set_shapes_for_outputs(ret)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\ops.py”, line 1894, in set_shapes_for_outputs
      output.set_shape(s)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\ops.py”, line 443, in set_shape
      self._shape = self._shape.merge_with(shape)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\tensor_shape.py”, line 550, in merge_with
      stop = key.stop

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\tensor_shape.py”, line 798, in as_shape
      “””Returns this shape as a TensorShapeProto.”””

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\tensor_shape.py”, line 431, in __init__
      size for one or more dimension. e.g. TensorShape([None, 256])

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\tensor_shape.py”, line 376, in as_dimension
      other = as_dimension(other)

      File “C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\tensor_shape.py”, line 32, in __init__
      if value is None

      TypeError: int() argument must be a string, a bytes-like object or a number, not ‘TensorShapeProto’

      运行此命令时出现此错误 {model.add(Dense(12, input_dim=8, activation=’relu’))}

      有什么帮助吗?

    • Penchalaiah 2019 年 12 月 8 日 下午 6:24 #

      很棒的教程。解释简单而精确。非常感谢!

    • Loc 2022 年 6 月 29 日 下午 1:00 #

      很棒的艺术家

  2. Geoff 2016 年 5 月 29 日 上午 6:18 #

    你能解释一下如何将权重正则化实现到层中吗?

  3. KWC 2016 年 6 月 14 日 下午 12:08 #

    导入语句,以防其他人需要

    来自 keras.models import Sequential
    from keras.layers import Dense, Activation

  4. Aakash Nain 2016 年 6 月 29 日 下午 6:00 #

    如果第一层有 8 个输入,那么为什么我们在下一行中将其取为“12”?

    model.add(Dense(12, input_dim=8, init=’uniform’, activation=’relu’))

    • Jason Brownlee 2016 年 6 月 30 日 上午 6:47 #

      你好 Aakash。

      输入层由 input_dim 参数定义,此处设置为 8。

      第一个隐藏层有 12 个神经元。

  5. Joshua 2016 年 7 月 2 日 上午 12:04 #

    我运行了你的程序,但遇到了一个错误。
    ValueError: 无法将字符串转换为浮点数
    这是什么原因,我该如何解决?
    谢谢。
    顺便说一句,这是一篇很棒的文章。

    • Jason Brownlee 2016 年 7 月 2 日 上午 6:20 #

      可能是复制粘贴错误。也许可以尝试复制并运行第 6 部分中列出的整个示例?

    • KeyChy 2019 年 7 月 3 日 下午 5:45 #

      也许当你将所有参数设置在 *.csv 文件中的额外列中时。然后你应该将分隔符从 , 替换为 ;,例如
      dataset = numpy.loadtxt(“pima-indians-diabetes.csv”, delimiter=”;”)
      这为我解决了问题。

  6. cheikh brahim 2016 年 7 月 5 日 下午 7:40 #

    感谢您提供简单实用的示例。

  7. Nikhil Thakur 2016 年 7 月 6 日 下午 6:39 #

    你好 Sir,我正尝试使用 Keras 进行 NLP,特别是句子分类。我已将模型构建部分放在下面。它需要很长时间才能执行。我正在使用 Pycharm IDE。

    batch_size = 32
    nb_filter = 250
    filter_length = 3
    nb_epoch = 2
    pool_length = 2
    output_dim = 5
    hidden_dims = 250

    # 构建模型

    model1 = Sequential()

    model1.add(Convolution1D(nb_filter, filter_length ,activation=’relu’,border_mode=’valid’,
    input_shape=(len(embb_weights),dim), weights=[embb_weights]))

    model1.add(Dense(hidden_dims))
    model1.add(Dropout(0.2))
    model1.add(Activation(‘relu’))

    model1.add(MaxPooling1D(pool_length=pool_length))

    model1.add(Dense(output_dim, activation=’sigmoid’))

    sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)

    model1.compile(loss=’mean_squared_error’,
    optimizer=sgd,
    metrics=['accuracy'])

  8. Andre Norman 2016 年 7 月 15 日 上午 10:40 #

    嗨 Jason,感谢你提供的精彩示例。鉴于该模型的准确率为 79.56%。从这里开始,你会采取哪些步骤来提高准确率?

    鉴于我对机器学习的初步了解,我的初步方法将是:

    实现前向传播,然后计算成本函数,然后实现反向传播,使用梯度检查来评估我的网络(使用后禁用),然后使用梯度下降。

    但是,与使用 Keras 相比,这种方法似乎很艰苦。感谢您的回复。

    • Jason Brownlee 2016 年 7 月 15 日 上午 10:52 #

      你好 Andre,确实 Keras 让处理神经网络变得容易多了。甚至很有趣!

      我们可能在这类问题上达到了上限,但这里有一些提高性能的一般性建议。
      – 数据准备 – 尝试从不同角度看待问题,看看哪种最能暴露问题结构给学习算法(数据转换、特征工程等)。
      – 算法选择 – 尝试多种算法,看看哪种或哪几种在问题上表现最好(在所有视图上都尝试)。
      – 算法调优 – 精细调整表现良好的算法以充分发挥其潜力(网格搜索或随机搜索超参数调优)。
      – 集成 – 组合多个算法的预测(堆叠、提升、装袋等)。

      对于神经网络,有很多可以调整的地方,我认为尝试不同的网络拓扑结构(层和每层的神经元数量)以及训练周期和学习率(更大的网络需要更多的训练)会带来很大的收益。

      希望这些能作为一个开始有所帮助。

      • Andre Norman 2016 年 7 月 18 日 上午 7:19 #

        太棒了!谢谢 Jason =)

    • quentin 2017 年 8 月 7 日 下午 8:41 #

      这里有一些有趣的东西。
      https://youtu.be/vq2nnJ4g6N0

  9. Romilly Cocking 2016 年 7 月 21 日 上午 12:31 #

    嗨 Jason,这是一个很好的例子,但如果有人在 IPython/Jupyter notebook 中运行它,他们很可能会在运行 fit 步骤时遇到 I/O 错误。这是由于 IPython 中存在一个已知的错误。

    解决方法是将 verbose=0 设置为如下:

    # 拟合模型
    model.fit(X, Y, nb_epoch=40, batch_size=10, verbose=0)

  10. Anirban 2016 年 7 月 23 日 下午 10:20 #

    很棒的例子。不过有一个查询。我现在如何输入一个输入并获得输出(0 或 1)?您能否提供相应的命令?
    谢谢

    • Jason Brownlee 2016 年 7 月 24 日 上午 6:53 #

      您可以调用 model.predict() 来获取预测,然后对每个值进行四舍五入以将其转换为二进制值。

      例如,下面是一个完整的示例,展示了如何四舍五入预测值并将其打印到控制台。

      • Debanjan 2017 年 3 月 27 日 下午 12:04 #

        你好,为什么你不使用任何测试集?我认为你正在从训练集中进行预测。

        • Jason Brownlee 2017 年 3 月 28 日 上午 8:19 #

          没错,这只是一个帮助你开始使用 Keras 的示例。

      • David 2017 年 6 月 26 日 上午 12:24 #

        Jason,我不太明白预测值([1.0, 0.0, 1.0, 0.0, 1.0,……)如何映射到现实世界的问题。例如,结果中的第一个“1.0”表示什么?

        我知道这是对糖尿病的“真实”预测——但这是对列表中的第一位患者的预测吗?那么第二个结果“0.0”是第二位患者/数据集行中的预测吗?

        • Jason Brownlee 2017 年 6 月 26 日 上午 6:08 #

          请记住,原始文件在最后一列(类)中具有 0 和 1 值,其中 0 表示未发作糖尿病,1 表示已发作糖尿病。

          我们正在预测这一列中的新值。

          我们为特定行进行预测,传入他们的医疗信息并预测糖尿病的发作。我们碰巧一次性为多行执行此操作。

          • ami 2018 年 7 月 16 日 下午 4:30 #

            你好 jason

            在计算预测时我遇到了这个错误。

            #calculate predictions

            predictions = model.predict(X)

            #round predictions

            rounded = [round(x) for x in predictions]

            print(rounded)

            —————————————————————————
            TypeError Traceback (most recent call last)
            in ()
            2 predictions = model.predict(X)
            3 #round predictions
            —-> 4 rounded = [round(x) for x in predictions]
            5 print(rounded)

            在 (.0)
            2 predictions = model.predict(X)
            3 #round predictions
            —-> 4 rounded = [round(x) for x in predictions]
            5 print(rounded)

            TypeError: type numpy.ndarray doesn’t define __round__ method

          • Jason Brownlee 2018 年 7 月 17 日 上午 6:09 #

            尝试删除 round() 调用。

      • Rachel 2017 年 6 月 28 日 下午 8:28 #

        嗨,Jason,
        我可以问一下你为什么使用与模型相同的 X 数据来进行预测吗?

        # 拟合模型
        model.fit(X, Y, epochs = 150, batch_size = 10, verbose = 2)

        # 计算预测值
        predictions = model.predict(X)

        Rachel

        • Jason Brownlee 2017 年 6 月 29 日 上午 6:34 #

          这是我手头的所有东西。X 表示数据矩阵。

          在 predict() 中用 Xprime 或你喜欢的任何东西替换 X。

      • jitendra 2018 年 3 月 27 日 下午 7:20 #

        嗨,我该如何输入(8,125,96,0,0,0.0,0.232,54)来获得我们的输出?

        predictions = model.predict(X)
        我的意思是,我想在 input_dim=8 的地方获得输出 8,125,96,0,0,0.0,0.232,54。

        • Jason Brownlee 2018 年 3 月 28 日 上午 6:24 #

          将你的输入包装在一个数组中,n 列带有一行,然后将其传递给模型。

          这有帮助吗?

          • Roman 2018 年 10 月 5 日 下午 11:22 #

            你好,我尝试在类似的神经网络上使用预测,但一直收到输入维度形状不同的错误。

            您能否举例说明示例神经网络上的数组应该是什么样子?

          • Jason Brownlee 2018 年 10 月 6 日 上午 5:45 #

            对于 MLP,数据必须组织成样本 x 特征的二维数组。

  11. Anirban 2016 年 7 月 23 日 下午 10:52 #

    我无法到达最后一个 epoch。之前出现了错误。
    Epoch 11/150
    390/768 [==============>……………]Traceback (most recent call last):.6921

    ValueError: I/O operation on closed file

    通过调整 epoch 和 batch size,我解决了这个问题。

    现在,为了预测一个未知值,我加载了一个新的数据集并使用了下面的 predict 命令。
    dataset_test = numpy.loadtxt(“pima-indians-diabetes_test.csv”,delimiter=”,”) – 只有一个行

    X = dataset_test[:,0:8]
    model.predict(X)

    但我遇到了错误。
    X = dataset_test[:,0:8]

    IndexError: 数组索引过多

    您能帮忙吗?

    谢谢

    • Jason Brownlee 2016 年 7 月 24 日 上午 6:55 #

      当我从笔记本电脑或 IDE 运行时,我看到了类似这样的问题。

      考虑从控制台运行示例以确保它们正常工作。

      考虑关闭详细输出(fit() 调用中的 verbose=0)以禁用进度条。

  12. David Kluszczynski 2016 年 7 月 28 日 上午 12:42 #

    嗨,Jason!
    很喜欢这个教程!不过我有一个问题。
    有没有办法在模型训练后将权重保存到文件中,以便在 kaggle 等地方使用?
    谢谢,
    大卫

  13. Alex Hopper 2016 年 7 月 29 日 上午 5:45 #

    嘿,Jason!感谢您提供的精彩教程!我使用您的教程学习了CNN。我有一个问题想请教您……假设我想用Keras对图像进行分类,并且我有3个或更多类别需要分类,我的算法如何知道这些类别呢?你知道,我需要编写代码来定义什么是猫、狗和马。有没有办法编写这个?我尝试了

    target_names = [‘类别 0(猫)’, ‘类别 1(狗)’, ‘类别 2(马)’]
    print(classification_report(np.argmax(Y_test,axis=1), y_pred,target_names=target_names))

    但是我的结果没有正确分类。

    精确率 召回率 f1分数 支持数
    类别 0(猫) 0.00 0.00 0.00 17
    类别 1(狗) 0.00 0.00 0.00 14
    类别 2(马) 0.99 1.00 0.99 2526

    平均/总计 0.98 0.99 0.98 2557

  14. Anonymouse 2016年8月2日晚上11:28 #

    这真的很有用,谢谢。

    我正在使用Keras(带有CNN)对文档进行情感分类,并且我想提高性能,但在以非任意方式调整参数方面我完全不知所措。您能否指导我一些能帮助我以更系统的方式进行的方法?肯定有一些启发式规则或经验法则可以指导我。

    • Jason Brownlee 2016年8月3日上午8:09 #

      我有一个教程很快就要发布了(下周),其中提供了大量关于调整Keras中神经网络超参数的例子,但仅限于MLP。

      对于CNN,我建议调整重复层(卷积+最大池化)的数量、重复块中的滤波器数量,以及网络预测部分中密集层的数量和大小。还可以考虑使用预训练模型中的一些固定层作为网络起点(例如VGG),然后尝试仅围绕它们训练输入和输出层来解决您的问题。

      希望这些能作为一个开始有所帮助。

  15. Shopon 2016年8月14日下午5:04 #

    Jason你好,我的准确率是:0.0104,而您的准确率是0.7879,我的损失是:-9.5414。数据集有问题吗?我从不同的网站下载了数据集。

    • Jason Brownlee 2016年8月15日下午12:36 #

      我认为您的实现或数据集可能存在问题。您的数字差得很远。

  16. mohamed 2016年8月15日上午9:30 #

    训练后,如何将训练好的模型用于新样本?

    • Jason Brownlee 2016年8月15日下午12:36 #

      你可以调用 model.predict()

      请参见上面的评论,其中有具体的代码示例。

  17. Omachi Okolo 2016年8月16日晚上10:21 #

    嗨,Jason,
    我是一名学生,正在研究如何使用人工神经网络来预测潜在软件项目的商业可行性。
    我打算使用Python作为编程语言。ANN的应用令我着迷,但我对机器学习和Python都很陌生。您能建议我如何着手吗?
    非常感谢

  18. Agni 2016年8月17日凌晨6:23 #

    亲爱的Jeson,这是一个非常适合初学者的教程。它能满足许多学生寻求初步帮助的需求。但我有一个问题。您能否阐明几件事情:i)如何使用测试数据集测试训练好的模型(即加载测试数据集并应用模型,假设测试文件名是test.csv);ii)打印出在测试数据集上获得的准确率;iii)输出有多个类别(假设是4类别分类问题)。
    请提供完整的程序以消除任何困惑。
    非常感谢。

  19. Doron Vetlzer 2016年8月17日上午9:29 #

    我正在尝试构建一个具有一些递归连接的神经网络,但不是一个完全的递归层,如何在Keras中做到这一点?

    • Doron Vetlzer 2016年8月17日上午9:31 #

      我可以打印出网络的图表,但我的基本目标是让当前时间帧中的每个神经元只知道其自身的先前输出,而不是输出层中所有神经元的输出。

    • Jason Brownlee 2016年8月17日上午10:04 #

      Doron,我暂时不知道。

      • Doron Veltzer 2016年8月23日凌晨2:28 #

        感谢您的回复,祝您有美好的一天。

  20. sairam 2016年8月30日上午8:49 #

    你好 Jason,

    这是一个很棒的教程。感谢分享。

    我有一个包含100个指纹的数据集,我想使用Python(Keras)提取这100个指纹的细节。您能建议我从哪里开始吗?我真的很困惑。

    • Jason Brownlee 2016年8月31日上午8:43 #

      如果您的指纹是图像,您可能需要考虑使用卷积神经网络(CNN),它们在处理图像数据方面效果更好。

      请查看此数字识别教程作为开始。
      使用卷积神经网络和 Python Keras 进行手写数字识别

      • padmashri 2017年7月6日晚上10:12 #

        嗨 Jason
        感谢这个很棒的教程,我是机器学习的新手,我看完了您关于Keras的基础教程和手写数字识别的教程。我想了解如何训练一组图像数据,例如,图像数据可以是一些形状,如正方形、圆形、金字塔。
        请告诉我输入数据如何喂给程序,以及如何导出模型。

  21. CM 2016年9月1日下午4:23 #

    嗨,Jason,

    感谢这篇很棒的文章。但我有一个疑问。

    Keras中是否有任何内置函数可以提供ANN模型的特征重要性?

    如果没有,您能否建议一种技术,我可以使用它从损失函数中提取变量重要性?我正在考虑一种类似于RF中使用的技术,该技术通过排列选定变量的值并计算损失的相对增加来工作。

    此致,
    CM

  22. Kamal 2016年9月7日凌晨2:09 #

    Jason您好,我是深度学习的新手。作为一个新手,我问您一个可能显得愚蠢的技术性问题。我的问题是:在使用深度神经网络对句子进行分类时(例如,输出是+ve句子和-ve句子),我们是否可以使用句子的特征(例如句子长度等)?

    • Jason Brownlee 2016年9月7日上午10:27 #

      Kamal,问得好,是的,你可以。我鼓励你包含所有这些特征,看看哪些能提高性能。

  23. Saurabh 2016年9月11日下午12:42 #

    你好,我如何在一个有多个输出的数据集上使用它?例如,一个数据集输出A和B,其中A可以是0或1,B可以是3或4?

  24. Tom_P 2016年9月17日下午1:47 #

    嗨,Jason,
    教程看起来非常好,但不幸的是,在从keras.layers导入Dense时我一直收到一个错误,我收到的错误是:AttributeError: module ‘theano’ has no attribute ‘gof’
    我尝试重新安装Theano,但问题没有解决。

    祝好
    汤姆

    • Jason Brownlee 2016年9月18日上午7:57 #

      Tom,很抱歉听到这个消息。我以前从未见过这个问题。

      您搜索过Google吗?我可以看到一些帖子,这可能与您的scipy版本或其他类似软件有关。

      告诉我进展如何。

  25. shudhan 2016年9月21日下午5:54 #

    嗨,Jason,

    您能否做一个关于如何将额外训练数据添加到已训练模型中的教程?这将对更大的数据集有所帮助。我读过暖启动(warm start)用于随机森林。但不确定如何作为算法实现。实现它的通用版本会很好。谢谢!

    • Jason Brownlee 2016年9月22日上午8:08 #

      Shudhan,问得好!

      是的,您可以保存您的权重,稍后将它们加载到新的网络拓扑中,然后开始用新数据进行训练。

      如果时间允许,我将在接下来的几周内找出示例。

  26. Joanna 2016年9月22日凌晨1:09 #

    嗨,Jason,
    首先,恭喜您完成了如此出色的工作!
    我的问题是
    如果我的.csv文件还包含名义属性和数值属性,该怎么办?
    我应该将我的名义值转换为数值吗?

    提前感谢你

  27. ATM 2016年10月2日上午5:47 #

    一个小bug:-
    第25行:rounded = [round(x) for x in predictions]

    应该改为numpy.round,代码才能运行!
    尽管如此,教程还是非常棒的。这是我在Python中学习ANN入门所见过的最好的教程。谢谢!

    • Jason Brownlee 2016年10月2日上午8:20 #

      也许是您的Python版本或环境的问题?

      在Python 2.7中,round()函数是内置的。

      • AC 2017年1月14日凌晨2:11 #

        如果有Python3的评论会更好。
        #如果使用python3,请改用unmpy.round。

  28. Ash 2016年10月9日凌晨1:36 #

    这个很容易理解!很棒的文章!我们如何在Keras中执行dropout?

  29. Homagni Saha 2016年10月14日凌晨4:15 #

    你好 Jason,
    您最后使用了model.predict来预测结果。是否可以将模型保存在硬盘上的某个位置,然后将其转移到另一台机器(例如我使用的ROS上的turtlebot)上,然后在turtlebot上直接使用该模型进行预测?
    请告诉我怎么做。
    谢谢你
    Homagni Saha

  30. Rimi 2016年10月16日晚上8:21 #

    嗨,Jason,
    我首先实现了您的代码。但我的准确率只有45.18%,参数和一切都相同。
    我弄不明白为什么。
    谢谢

    • Jason Brownlee 2016年10月17日上午10:29 #

      Rimi,这确实听起来像个问题。

      请确认代码和数据完全匹配。

  31. Ankit 2016年10月26日晚上8:12 #

    嗨,Jason,
    我对第一层参数有点困惑。您说第一层有12个神经元,并期望8个输入变量。

    为什么第一层的神经元数量和输入维度不同?

    此致,
    Ankit

    • Jason Brownlee 2016年10月27日上午7:45 #

      Ankit,您好。

      问题有8个输入变量,第一个隐藏层有12个神经元。输入是数据的列,这是固定的。隐藏层通常是我们根据我们认为表示问题复杂度所需的能力而设计的。在这种情况下,我们为第一个隐藏层选择了12个神经元。

      希望这样更清楚。

  32. Tom 2016年10月27日凌晨3:04 #

    你好,
    我有一些数据,类似于鸢尾花数据,但有更多的列。
    我想使用MLP和DBN/CNNClassifier(或其他深度学习分类算法)来处理我的数据,看看它能正确地将数据分为6组。

    以前用的是J的深度学习,今天是第一次看到KERAS。
    KERAS是否有DL分类算法的示例(代码示例)?

    拜托,
    汤姆

    • Jason Brownlee 2016年10月27日上午7:48 #

      是的Tom,这篇帖子中的示例是一个神经网络(深度学习)应用于分类问题的示例。

  33. Rumesa 2016年10月30日凌晨1:57 #

    我已经安装了theano,但它给我tensorflow的错误。必须同时安装这两个包吗?因为tensorflow不支持Windows。在Windows上获取它的唯一方法是安装虚拟机。

    • Jason Brownlee 2016年10月30日上午8:57 #

      Keras与Theano一起运行效果很好。

      只需安装Theano,并将Keras配置为使用Theano后端。

      更多关于配置Keras后端的信息在此。
      https://machinelearning.org.cn/introduction-python-deep-learning-library-keras/

      • Rumesa 2016年10月31日凌晨4:36 #

        嘿Jason,我运行了你的代码但得到了以下错误。尽管我已经安装了theano后端。请帮帮我。我卡住了。

        使用 TensorFlow 后端。
        回溯(最近一次调用)
        File “C:\Users\pc\Desktop\first.py”, line 2, in
        来自 keras.models import Sequential
        File “C:\Users\pc\Anaconda3\lib\site-packages\keras\__init__.py”, line 2, in
        from . import backend
        File “C:\Users\pc\Anaconda3\lib\site-packages\keras\backend\__init__.py”, line 64, in
        from .tensorflow_backend import *
        File “C:\Users\pc\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py”, line 1, in
        import tensorflow as tf
        ImportError: No module named ‘tensorflow’
        >>>

        • Jason Brownlee 2016年10月31日凌晨5:34 #

          将Keras使用的后端从TensorFlow更改为Theano。

          您可以通过使用命令行开关或更改Keras配置文件来做到这一点。

          请参阅我在上一篇文章中发布的链接获取说明。

    • Maria 2017年1月6日下午1:05 #

      Rumesa你好!
      您解决问题了吗?我遇到了同样的问题。到处都是关于keras.json文件或环境变量的相同答案,但它不起作用。您能告诉我什么对您有效吗?

      • Jason Brownlee 2017年1月7日上午8:20 #

        有意思。

        也许最新版本与tensorflow的紧密耦合存在问题?我没遇到过这个问题。

        或许可以尝试测试Keras的先前版本,例如1.1.0?

        试试这个

  34. Alexon 2016年11月1日上午6:54 #

    嗨,Jason,

    首先,非常感谢您创建这些资源,我一直在关注您的邮件通讯,现在我终于有空自己学习更多关于它的知识了,所以您的工作非常感激。

    我的问题是:如何设置/获取每个隐藏节点的权重?

    我计划创建几个随机权重数组,然后使用遗传算法来查看哪个权重数组表现最好,并在几代中进行改进。最好的方法是什么?如果我使用“relu”激活函数,我是否认为这些随机生成的权重应该在0到0.05之间?

    非常感谢您的帮助:)
    Alexon

    • Jason Brownlee 2016年11月1日上午8:05 #

      Alexon,谢谢。

      您可以从网络中获取和设置权重。

      您可以在此处了解有关如何在此环境中进行操作的更多信息,例如将权重保存到文件。
      https://machinelearning.org.cn/save-load-keras-deep-learning-models/

      我希望这对您有所帮助,我很想听听您的进展。

      • Alexon 2016年11月6日凌晨6:36 #

        太好了,谢谢您指明方向。
        我很乐意告诉您进展如何,但这可能需要一些时间,因为这在工作之间是我非常“有时间的时候才做”的项目:)

        祝好!

  35. Arnaldo Gunzi 2016年11月2日晚上10:17 #

    很好的介绍,谢谢!

  36. Abbey 2016年11月14日晚上11:05 #

    您好

    我有一个问题,如何将一个字符表示为一个向量,该向量可以作为神经网络的输入来预测单词的含义,并使用LSTM进行训练?

    例如,我有“bf”来预测“boyfriend”或“best friend”,同样地,我有“2mor”来预测“tomorrow”。我需要将所有输入编码为字符表示的向量,以便用RNN/LSTM进行训练来预测输出。

    谢谢你。

    诚挚的问候

    • Jason Brownlee 2016年11月15日凌晨7:54 #

      Abbey,您好,您可以将字符映射到整数来获得整数向量。

      • Abbey 2016年11月15日下午6:17 #

        Jason,谢谢。如果我将英文字母、数字和特殊字符映射到整数值来获得向量。

        问题是LSTM如何预测字符?请详细举例说明。

        此致

        • Jason Brownlee 2016年11月16日凌晨9:27 #

          Abbey,您好。

          如果您的输出值也是字符,您可以将它们映射到整数,然后反向映射将预测转换回文本。

          • Abbey 2016年11月16日 下午8:39 #

            字符编码的输出值将是文本

      • Abbey 2016年11月15日 下午6:22 #

        谢谢你,Jason,如果我将字符映射到整数值,使用英文字母、数字和特殊字符来获取非正式文本的向量表示

        问题是 LSTM 如何预测与输入值含义相近的字符或单词。请为我提供更详细的示例。我根据你的教程示例理解 RNN/LSTM 的工作原理,但我正在为设计处理的逻辑而烦恼。

        此致

  37. Ammar 2016年11月27日 上午10:35 #

    嗨,Jason,
    我正在尝试在我的数据上实现一维 CNN。所以,我构建了我的网络。
    问题是
    def train_model(model, X_train, y_train, X_test, y_test)
    X_train = X_train.reshape(-1, 1, 41)
    X_test = X_test.reshape(-1, 1, 41)

    numpy.random.seed(seed)
    model.fit(X_train, y_train, validation_data=(X_test, y_test), nb_epoch=100, batch_size=64)
    # 模型的最终评估
    scores = model.evaluate(X_test, y_test, verbose=0)
    print(“Accuracy: %.2f%%” % (scores[1] * 100))
    上面的这个方法不起作用,也没有给我任何错误消息。
    你能帮帮我吗?

    • Jason Brownlee 2016年11月28日 上午8:40 #

      你好 Ammar,我很惊讶竟然没有错误消息。

      也许可以从命令行运行并添加一些 print() 语句,看看具体在哪里停止。

  38. KK 2016年11月28日 下午6:55 #

    嗨 Jason
    工作很棒。我还有另一个疑问。如何将其应用于文本挖掘。我有一个包含评论文档和标签的 csv 文件。我想根据可用的文本对文档进行分类。你能帮我这个忙吗?

    • Jason Brownlee 2016年11月29日 上午8:48 #

      我建议将字符转换为整数,然后使用 Embedding 层。

  39. Alex M 2016年11月30日 下午10:52 #

    Jason 先生,这是一个很棒的教程,但我遇到了一些错误。

    首先,我无法正确加载数据集,尝试纠正错误但未能成功。(FileNotFoundError: [Errno 2] No such file or directory: ‘pima-indians-diabetes.csv’)。

    其次:在尝试评估模型时,它说(X 未定义)也许是因为上传失败了。

    谢谢!

    • Jason Brownlee 2016年12月1日 上午7:29 #

      Alex,你需要下载文件并将其放在你当前的目录中。

      这有帮助吗?

  40. Alex M 2016年12月1日 下午6:45 #

    先生,现在成功了……
    谢谢!

  41. Bappaditya 2016年12月2日 下午7:35 #

    嗨,Jason,

    首先,非常感谢您提供如此出色的教程。我对机器学习非常陌生,坦白说我没有数据科学背景。机器学习的概念让我不知所措,现在我渴望成为这个领域的专家。我需要您从零开始的建议。另外,我是一名计算机工程(计算机硬件)的博士生,我想将其作为工具应用于 IC 的故障检测和测试。您能否为我提供该领域的参考文献?

  42. Alex M 2016年12月3日 下午8:00 #

    嗯,正如我们在日常编码生活中一样,错误会发生,现在我遇到了这个错误,我该如何纠正?谢谢!

    ” —————————————————————————
    NoBackendError Traceback (most recent call last)
    in ()
    16 import librosa.display
    17 audio_path = (‘/Users/MA/Python Notebook/OK.mp3’)
    —> 18 y, sr = librosa.load(audio_path)

    C:\Users\MA\Anaconda3\lib\site-packages\librosa\core\audio.py in load(path, sr, mono, offset, duration, dtype)
    107
    108 y = []
    –> 109 with audioread.audio_open(os.path.realpath(path)) as input_file
    110 sr_native = input_file.samplerate
    111 n_channels = input_file.channels

    C:\Users\MA\Anaconda3\lib\site-packages\audioread\__init__.py in audio_open(path)
    112
    113 # All backends failed!
    –> 114 raise NoBackendError()

    NoBackendError

    我只是在尝试将歌曲加载到 librosa 时才收到此错误……
    谢谢!!@Jason Brownlee

    • Jason Brownlee 2016年12月4日 上午5:30 #

      抱歉,这看起来是你的 librosa 库的问题,而不是机器学习问题。我无法给你专业建议,抱歉。

  43. Alex M 2016年12月4日 下午10:30 #

    谢谢,我已经成功纠正了这个错误……

    祝大家周日快乐……

    • Jason Brownlee 2016年12月5日 上午6:49 #

      很高兴听到这个消息,Alex。

    • ayush 2018年6月19日 上午3:27 #

      你是如何解决这个问题的?

  44. Lei 2016年12月4日 下午10:52 #

    你好,Jason,感谢你提供的精彩示例。
    我在笔记本电脑上运行了相同的代码。但结果不一致。可能的原因是什么?
    我使用的是 windows 8.1 64bit+eclipse+anaconda 4.2+theano 0.9.4+CUDA7.5
    我的结果如下。

    …… ……
    纪元 145/150

    10/768 […………………………] – ETA: 0s – loss: 0.3634 – acc: 0.8000
    80/768 [==>………………………] – ETA: 0s – loss: 0.4066 – acc: 0.7750
    150/768 [====>…………………….] – ETA: 0s – loss: 0.4059 – acc: 0.8067
    220/768 [=======>………………….] – ETA: 0s – loss: 0.4047 – acc: 0.8091
    300/768 [==========>……………….] – ETA: 0s – loss: 0.4498 – acc: 0.7867
    380/768 [=============>…………….] – ETA: 0s – loss: 0.4595 – acc: 0.7895
    450/768 [================>………….] – ETA: 0s – loss: 0.4568 – acc: 0.7911
    510/768 [==================>………..] – ETA: 0s – loss: 0.4553 – acc: 0.7882
    580/768 [=====================>……..] – ETA: 0s – loss: 0.4677 – acc: 0.7776
    660/768 [========================>…..] – ETA: 0s – loss: 0.4697 – acc: 0.7788
    740/768 [===========================>..] – ETA: 0s – loss: 0.4611 – acc: 0.7838
    768/768 [==============================] – 0s – loss: 0.4614 – acc: 0.7799
    纪元 146/150

    10/768 […………………………] – ETA: 0s – loss: 0.3846 – acc: 0.8000
    90/768 [==>………………………] – ETA: 0s – loss: 0.5079 – acc: 0.7444
    170/768 [=====>……………………] – ETA: 0s – loss: 0.4500 – acc: 0.7882
    250/768 [========>…………………] – ETA: 0s – loss: 0.4594 – acc: 0.7840
    330/768 [===========>………………] – ETA: 0s – loss: 0.4574 – acc: 0.7818
    400/768 [==============>……………] – ETA: 0s – loss: 0.4563 – acc: 0.7775
    470/768 [=================>…………] – ETA: 0s – loss: 0.4654 – acc: 0.7723
    540/768 [====================>………] – ETA: 0s – loss: 0.4537 – acc: 0.7870
    620/768 [=======================>……] – ETA: 0s – loss: 0.4615 – acc: 0.7806
    690/768 [=========================>….] – ETA: 0s – loss: 0.4631 – acc: 0.7739
    750/768 [============================>.] – ETA: 0s – loss: 0.4649 – acc: 0.7733
    768/768 [==============================] – 0s – loss: 0.4636 – acc: 0.7734
    第 147 周期/150

    10/768 […………………………] – ETA: 0s – loss: 0.3561 – acc: 0.9000
    90/768 [==>………………………] – ETA: 0s – loss: 0.4167 – acc: 0.8556
    170/768 [=====>……………………] – ETA: 0s – loss: 0.4824 – acc: 0.8059
    250/768 [========>…………………] – ETA: 0s – loss: 0.4534 – acc: 0.8080
    330/768 [===========>………………] – ETA: 0s – loss: 0.4679 – acc: 0.7848
    400/768 [==============>……………] – ETA: 0s – loss: 0.4590 – acc: 0.7950
    460/768 [================>………….] – ETA: 0s – loss: 0.4619 – acc: 0.7913
    530/768 [===================>……….] – ETA: 0s – loss: 0.4562 – acc: 0.7868
    600/768 [======================>…….] – ETA: 0s – loss: 0.4497 – acc: 0.7883
    680/768 [=========================>….] – ETA: 0s – loss: 0.4525 – acc: 0.7853
    760/768 [============================>.] – ETA: 0s – loss: 0.4568 – acc: 0.7803
    768/768 [==============================] – 0s – loss: 0.4561 – acc: 0.7812
    第 148 周期/150

    10/768 […………………………] – ETA: 0s – loss: 0.4183 – acc: 0.9000
    80/768 [==>………………………] – ETA: 0s – loss: 0.3674 – acc: 0.8750
    160/768 [=====>……………………] – ETA: 0s – loss: 0.4340 – acc: 0.8250
    240/768 [========>…………………] – ETA: 0s – loss: 0.4799 – acc: 0.7583
    320/768 [===========>………………] – ETA: 0s – loss: 0.4648 – acc: 0.7719
    400/768 [==============>……………] – ETA: 0s – loss: 0.4596 – acc: 0.7775
    470/768 [=================>…………] – ETA: 0s – loss: 0.4475 – acc: 0.7809
    540/768 [====================>………] – ETA: 0s – loss: 0.4545 – acc: 0.7778
    620/768 [=======================>……] – ETA: 0s – loss: 0.4590 – acc: 0.7742
    690/768 [=========================>….] – ETA: 0s – loss: 0.4769 – acc: 0.7652
    760/768 [============================>.] – ETA: 0s – loss: 0.4748 – acc: 0.7658
    768/768 [==============================] – 0s – loss: 0.4734 – acc: 0.7669
    第 149 周期/150

    10/768 […………………………] – ETA: 0s – loss: 0.3043 – acc: 0.9000
    90/768 [==>………………………] – ETA: 0s – loss: 0.4913 – acc: 0.7111
    170/768 [=====>……………………] – ETA: 0s – loss: 0.4779 – acc: 0.7588
    250/768 [========>…………………] – ETA: 0s – loss: 0.4794 – acc: 0.7640
    320/768 [===========>………………] – ETA: 0s – loss: 0.4957 – acc: 0.7562
    370/768 [=============>…………….] – ETA: 0s – loss: 0.4891 – acc: 0.7703
    450/768 [================>………….] – ETA: 0s – loss: 0.4737 – acc: 0.7867
    520/768 [===================>……….] – ETA: 0s – loss: 0.4675 – acc: 0.7865
    600/768 [======================>…….] – ETA: 0s – loss: 0.4668 – acc: 0.7833
    680/768 [=========================>….] – ETA: 0s – loss: 0.4677 – acc: 0.7809
    760/768 [============================>.] – ETA: 0s – loss: 0.4648 – acc: 0.7803
    768/768 [==============================] – 0s – loss: 0.4625 – acc: 0.7826
    第 150 周期/150

    10/768 […………………………] – ETA: 0s – loss: 0.2751 – acc: 1.0000
    100/768 [==>………………………] – ETA: 0s – loss: 0.4501 – acc: 0.8100
    170/768 [=====>……………………] – ETA: 0s – loss: 0.4588 – acc: 0.8059
    250/768 [========>…………………] – ETA: 0s – loss: 0.4299 – acc: 0.8200
    310/768 [===========>………………] – ETA: 0s – loss: 0.4298 – acc: 0.8129
    380/768 [=============>…………….] – ETA: 0s – loss: 0.4365 – acc: 0.8053
    460/768 [================>………….] – ETA: 0s – loss: 0.4469 – acc: 0.7957
    540/768 [====================>………] – ETA: 0s – loss: 0.4436 – acc: 0.8000
    620/768 [=======================>……] – ETA: 0s – loss: 0.4570 – acc: 0.7871
    690/768 [=========================>….] – ETA: 0s – loss: 0.4664 – acc: 0.7783
    760/768 [============================>.] – ETA: 0s – loss: 0.4617 – acc: 0.7789
    768/768 [==============================] – 0s – loss: 0.4638 – acc: 0.7773

    32/768 [>………………………..] – ETA: 0s
    448/768 [================>………….] – ETA: 0sacc: 79.69%

  45. Nanya 2016年12月10日 下午2:55 #

    你好 Jason Brownlee,感谢分享~
    我是深度学习新手。我想知道你在这里讨论的“Keras”是否可以用于在 TensorFlow 中构建 CNN 并训练一些 csv 文件进行分类。这可能是一个愚蠢的问题,但等待你的回复。我正在进行我的毕业项目,关于使用 CNN 进行词义消歧,但无法继续。希望得到你的帮助~祝你一切顺利!

    • Jason Brownlee 2016年12月11日 上午5:22 #

      抱歉 Nanya,我不确定我是否理解你的问题。你能否换个说法?

  46. Anon 2016年12月16日 上午12:51 #

    我刚刚安装了 Anaconda 和 Keras,正在使用 python 3.5。
    似乎 Py3 相对于 Py2 在四舍五入方面存在错误。我认为这是因为这个更改:https://github.com/numpy/numpy/issues/5700

    我删除了四舍五入,只使用了 print(predictions),它似乎可以工作,输出了浮点数。

    这看起来正确吗?


    第 150 周期/150
    0s – loss: 0.4593 – acc: 0.7839
    [[ 0.79361773]
    [ 0.10443526]
    [ 0.90862554]
    ……,
    [ 0.33652252]
    [ 0.63745886]
    [ 0.11704451]]

  47. Florin Claudiu Mihalache 2016年12月19日 上午2:37 #

    你好 Jason Brownlee
    我尝试修改了你的示例来解决我的问题(字母识别,http://archive.ics.uci.edu/ml/datasets/Letter+Recognition)。
    我的数据集看起来像 http://archive.ics.uci.edu/ml/machine-learning-databases/letter-recognition/letter-recognition.data (T,2,8,3,5,1,8,13,0,6,6,10,8,0,8,0,8)。我尝试将数据分割成输入和输出,如下所示:

    X = dataset[:,1:17]
    Y = dataset[:,0]
    但我遇到了一些错误(与字符串未被识别有关)。
    我尝试用 ASCII 码修改每个字母(A 变成 65,以此类推)。字符串错误消失了。
    程序现在可以编译了,但输出看起来像这样:

    17445/20000 [=========================>….] – ETA: 0s – loss: -1219.4768 – acc:0.0000e+00
    17605/20000 [=========================>….] – ETA: 0s – loss: -1219.4706 – acc:0.0000e+00
    17730/20000 [=========================>….] – ETA: 0s – loss: -1219.4566 – acc:0.0000e+00
    17890/20000 [=========================>….] – ETA: 0s – loss: -1219.4071 – acc:0.0000e+00
    18050/20000 [==========================>…] – ETA: 0s – loss: -1219.4599 – acc:0.0000e+00
    18175/20000 [==========================>…] – ETA: 0s – loss: -1219.3972 – acc:0.0000e+00
    18335/20000 [==========================>…] – ETA: 0s – loss: -1219.4642 – acc:0.0000e+00
    18495/20000 [==========================>…] – ETA: 0s – loss: -1219.5032 – acc:0.0000e+00
    18620/20000 [==========================>…] – ETA: 0s – loss: -1219.4391 – acc:0.0000e+00
    18780/20000 [===========================>..] – ETA: 0s – loss: -1219.5652 – acc:0.0000e+00
    18940/20000 [===========================>..] – ETA: 0s – loss: -1219.5520 – acc:0.0000e+00
    19080/20000 [===========================>..] – ETA: 0s – loss: -1219.5381 – acc:0.0000e+00
    19225/20000 [===========================>..] – ETA: 0s – loss: -1219.5182 – acc:0.0000e+00
    19385/20000 [============================>.] – ETA: 0s – loss: -1219.6742 – acc:0.0000e+00
    19535/20000 [============================>.] – ETA: 0s – loss: -1219.7030 – acc:0.0000e+00
    19670/20000 [============================>.] – ETA: 0s – loss: -1219.7634 – acc:0.0000e+00
    19830/20000 [============================>.] – ETA: 0s – loss: -1219.8336 – acc:0.0000e+00
    19990/20000 [============================>.] – ETA: 0s – loss: -1219.8532 – acc:0.0000e+00
    20000/20000 [==============================] – 1s – loss: -1219.8594 – acc: 0.0000e+00
    18880/20000 [===========================>..] – ETA: 0sacc: 0.00%

    我不明白为什么。你能帮帮我吗?

    • Anon 2016年12月26日 上午6:44 #

      你使用的是哪个版本的 Python?

  48. karishma sharma 2016年12月22日 上午10:03 #

    嗨,Jason,

    由于 epoch 设置为 150,batch size 为 10,训练算法是在每次迭代中随机选择 10 个训练样本,还是在我们已经有 768 个总数的情况下?或者它是否在完成所有样本后随机采样?

    谢谢

    • Jason Brownlee 2016年12月23日 上午5:27 #

      好问题,

      它遍历数据集 150 次,在一个 epoch 内,它每次处理 10 行,然后更新权重。在每个 epoch 之前,模式都会被打乱。

      希望这能有所帮助。

  49. Kaustuv 2017年1月9日 上午4:57 #

    嗨 Jason
    非常感谢这篇博文。它确实帮助我开始学习一直计划了几个月的深度学习。你那些简单而丰富的博文太棒了。在完成所有教程之前,我没有问题。
    关于你的书的可用性有一个问题。我如何在印度购买这些书?

  50. Stephen Wilson 2017年1月15日 下午4:00 #

    你好 Jason,首先,你在这里的工作是一个很棒的资源,我非常感谢你付出的努力。
    我对 Python 的掌握程度略高于初学者,对 ML 是绝对的新手,我想知道你是否能帮我将我的问题分类并找到一个角度来处理它。

    我的数据是这样的:
    列名:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 结果
    值:4, 4, 6, 6, 3, 2, 5, 5, 0, 0, 0, 0, 0, 0, 0, 4

    我想找到每个列名类别作为结果的百分比概率,这取决于所有值(1-15)的配置。然后,如果需要,比较值配置与另一行值以找到相同的,从而得到所需的总计算:

    列名:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 结果
    值:4, 4, 6, 6, 3, 2, 5, 5, 0, 0, 0, 0, 0, 0, 0, 4
    值2:7, 3, 5, 1, 4, 8, 6, 2, 9, 9, 9, 9, 9, 9, 9

    如果我的解释不清楚,我先致歉,并感谢您提供的任何帮助。

  51. Rohit 2017年1月16日 下午10:37 #

    感谢 Jason 提供了如此好且简洁的示例。

    我只想问一下,是否可以将此模型保存在文件中,并移植到 Android 或 iOS 设备?如果可以,有哪些库可供使用?

    谢谢

    Rohit

    • Jason Brownlee 2017年1月17日 上午7:38 #

      谢谢 Rohit,

      这是将 Keras 模型保存到文件的示例:
      https://machinelearning.org.cn/save-load-keras-deep-learning-models/

      我不知道如何在 Android 或 iOS 设备上运行 Keras。让我知道你的进展。

      • zaheer khan 2017年6月16日 下午7:17 #

        亲爱的 Jason,感谢分享这篇文章。
        我是深度学习的新手,如果我的问题不清楚,请原谅。我的问题是,我们能否从任何 .php, .aspx, 或 .html 网页调用所有这些函数和程序?我的意思是,我从用户界面加载变量和其他文件选择,然后将它们作为输入传递给这些函数。

        期待您的回复。
        提前感谢。
        zaheer

        • Jason Brownlee 2017年6月17日 上午7:25 #

          也许,这听起来像一个系统设计问题,而不是机器学习问题。

          我建议你像任何软件工程项目一样,收集需求,评估风险。

  52. Hsiang 2017年1月18日 下午3:35 #

    嗨,Jason

    感谢您的博客!太棒了!

    我使用 tensorflow 作为后端,并在 Jupyter 中实现了这些过程。
    我执行了“source activate tensorflow”->“ipython notebook”。
    我可以使用 Keras 并导入 tensorflow。

    然而,似乎这样的环境不支持 pandas 和 sklearn。
    您有什么方法可以将 pandas、sklearn 和 keras 结合起来吗?
    (我想使用 sklearn 回顾分类问题并比较与深度学习方法的准确性。但我也想在同一个界面中整合这些工作。)

    谢谢!

    • Jason Brownlee 2017年1月19日 上午7:24 #

      抱歉,我个人不使用 notebook,因此无法提供好的建议。

      • Hsiang 2017年1月19日 下午12:53 #

        谢谢你,Jason!
        实际上问题不在 notebook。即使我使用了终端模式,即只执行“source activate tensorflow”。它也无法导入 sklearn。这是否意味着 tensorflow 库与 sklearn 不兼容?再次感谢!

        • Jason Brownlee 2017年1月20日 上午10:17 #

          抱歉 Hsiang,我没有在虚拟环境中使用 sklearn 和 tensorflow 的经验。

          • Hsiang 2017年1月21日 上午12:46 #

            谢谢!

          • Jason Brownlee 2017年1月21日 上午10:34 #

            不客气 Hsiang。

  53. keshav bansal 2017年1月24日 上午12:45 #

    你好先生,
    这确实是一篇非常有信息量的帖子。我知道我的问题很琐碎,但你能否向我展示如何在显式指定的数据元组上进行预测,例如 v=[6,148,72,35,0,33.6,0.627,50]
    不过还是谢谢你的教程。

    • Jason Brownlee 2017年1月24日 上午11:04 #

      你好 keshav,

      你可以通过调用 model.predict() 来进行预测。

  54. CATRINA WEBB 2017年1月25日 上午9:06 #

    当我重新运行文件(不进行预测)时,它是否会重置模型和权重?

  55. Ericson 2017年1月30日 下午8:04 #

    打扰一下,我想问您一个关于这段话的问题:“dataset = numpy.loadtxt(“pima-indians-diabetes.csv”,delimiter=’,’)”,我在 Mac 上使用了这个并下载了数据集,然后我将文本转换成了 csv 文件。运行程序。

    然后我得到:{Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 12:39:47)
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    输入“copyright”、“credits”或“license()”获取更多信息。
    >>>
    ============ RESTART: /Users/luowenbin/Documents/database_test.py ============
    使用 TensorFlow 后端。

    回溯(最近一次调用)
    File “/Users/luowenbin/Documents/database_test.py”, line 9, in
    dataset = numpy.loadtxt(“pima-indians-diabetes.csv”,delimiter=’,’)
    File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/npyio.py”, line 985, in loadtxt
    items = [conv(val) for (conv, val) in zip(converters, vals)]
    File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/npyio.py”, line 687, in floatconv
    return float(x)
    ValueError: could not convert string to float: book
    >>> }
    我该如何解决这个问题?请帮帮我,谢谢!

    • Jason Brownlee 2017年2月1日 上午10:22 #

      你好 Ericson,

      确认“pima-indians-diabetes.csv”的内容符合你对 CSV 行列表的预期。

  56. Sukhpal 2017年2月7日 下午9:00 #

    打扰一下,当我运行这段代码来处理我的数据集时,我遇到了这个问题……请帮助我找到解决这个问题的方法
    runfile(‘C:/Users/sukhpal/.spyder/temp.py’, wdir=’C:/Users/sukhpal/.spyder’)
    使用 TensorFlow 后端。
    回溯(最近一次调用)

    File “”, line 1, in
    runfile(‘C:/Users/sukhpal/.spyder/temp.py’, wdir=’C:/Users/sukhpal/.spyder’)

    File “C:\Users\sukhpal\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py”, line 866, in runfile
    execfile(filename, namespace)

    File “C:\Users\sukhpal\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py”, line 87, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

    File “C:/Users/sukhpal/.spyder/temp.py”, line 1, in
    来自 keras.models import Sequential

    File “C:\Users\sukhpal\Anaconda2\lib\site-packages\keras\__init__.py”, line 2, in
    from . import backend

    File “C:\Users\sukhpal\Anaconda2\lib\site-packages\keras\backend\__init__.py”, line 67, in
    from .tensorflow_backend import *

    File “C:\Users\sukhpal\Anaconda2\lib\site-packages\keras\backend\tensorflow_backend.py”, line 1, in
    import tensorflow as tf

    ImportError: No module named tensorflow

    • Jason Brownlee 2017年2月8日 上午9:34 #

      这是最新版本 tensorflow 的一个变化,我将对此进行调查并修改示例。

      目前,请考虑安装和使用旧版本的 tensorflow。

  57. Will 2017年2月14日 上午5:33 #

    很棒的教程!你付出了惊人的努力,并且营销技巧也很棒(我也有电子邮件列表、电子书和序列等)。我在 Jupyter notebook 中运行了这个……我注意到第 144 个 epoch (acc .7982) 的准确率比第 150 个 epoch 更高。为什么会这样?

    附注:我为打印执行了此操作:print(numpy.round(predictions))
    它似乎可以避免打印包含 dtype(混乱)的数组列表。

  58. Sukhpal 2017年2月14日下午3:50 #

    请帮我找出这个错误
    runfile('C:/Users/sukhpal/.spyder/temp.py', wdir='C:/Users/sukhpal/.spyder') ERROR: execution aborted

    • Jason Brownlee 2017年2月15日上午11:32 #

      我不确定,Sukhpal。

      考虑在命令行中运行代码,我个人不使用 IDE。

  59. Kamal 2017年2月14日下午5:15 #

    请帮我找出这个错误,找出这个错误
    Epoch 194/195
    195/195 [==============================] – 0s – loss: 0.2692 – acc: 0.8667
    Epoch 195/195
    195/195 [==============================] – 0s – loss: 0.2586 – acc: 0.8667
    195/195 [==============================] – 0s
    回溯(最近一次调用)

  60. Kamal 2017年2月15日下午3:24 #

    先生,当我用我的数据集运行代码时
    它没有显示总体准确率,尽管它显示了整个迭代的准确率和损失。

    • Jason Brownlee 2017年2月16日上午11:06 #

      Kamal,我不太明白你的问题,你能再说一遍吗?

  61. Val 2017年2月15日下午9:00 #

    嗨 Jason,我刚开始用 Keras 和 Theano 在 Python 中进行深度学习。我按照安装说明成功进行了安装。测试了一些例子,但当我逐行运行这个例子时,一旦我运行“model.fit(X,Y, nb_epochs=150, batch_size=10”就会出现很多异常和错误。

  62. CrisH 2017年2月17日下午8:12 #

    嗨,我怎么知道要为 random.seed() 使用什么数字?我的意思是,你使用了 7,有什么原因吗?另外,在代码的开头使用一次就足够了吗?

  63. kk 2017年2月18日凌晨1:53 #

    我是深度学习新手,找到了这个很棒的教程。继续努力,期待!

  64. Iqra Ameer 2017年2月21日凌晨5:20 #

    嗨,我在执行上面的例子时遇到了问题,它似乎运行不正常,并在“Using TensorFlow backend”处停止。

    第 147 周期/150
    768/768 [==============================] – 0s – loss: 0.4709 – acc: 0.7878
    第 148 周期/150
    768/768 [==============================] – 0s – loss: 0.4690 – acc: 0.7812
    第 149 周期/150
    768/768 [==============================] – 0s – loss: 0.4711 – acc: 0.7721
    第 150 周期/150
    768/768 [==============================] – 0s – loss: 0.4731 – acc: 0.7747
    32/768 [>………………………..] – ETA: 0sacc: 76.43%

    我是这个领域的初学者,你能指导我关于这个错误吗。
    我还在另一个数据集上执行了此操作,它以相同的行为停止。

    • Jason Brownlee 2017年2月21日上午9:39 #

      具体是什么错误?例子卡住了吗?

      也许可以尝试 Theano 后端看看是否有区别。另外,请确保你的所有库都是最新的。

  65. Iqra Ameer 2017年2月22日凌晨5:47 #

    亲爱的 Jason,
    非常感谢您的宝贵建议。我尝试了 Theano 后端,也更新了我所有的库,但它又卡在了

    768/768 [==============================] – 0s – loss: 0.4656 – acc: 0.7799
    第 149 周期/150
    768/768 [==============================] – 0s – loss: 0.4589 – acc: 0.7826
    第 150 周期/150
    768/768 [==============================] – 0s – loss: 0.4611 – acc: 0.7773
    32/768 [>………………………..] – ETA: 0sacc: 78.91%

    • Jason Brownlee 2017年2月22日上午10:05 #

      听到这个消息我很难过,我以前没见过这个问题。

      可能是内存问题或 CPU 过热问题?你能尝试使用不同的硬件吗?

    • frd 2017年3月8日凌晨2:50 #

      嗨!

      你是否找到了解决方案?

      我遇到了完全相同的问题。

      ( ... )
      第 149 周期/150
      768/768 [==============================] – 0s – loss: 0.4593 – acc: 0.7773
      第 150 周期/150
      768/768 [==============================] – 0s – loss: 0.4586 – acc: 0.7891
      32/768 [>………………………..] – ETA: 0sacc: 76.69%

  66. Bhanu 2017年2月23日下午1:51 #

    你好,先生,
    我想问一下,我们能否通过增加层数将此代码转换为深度学习?

  67. Ananya Mohapatra 2017年2月28日下午6:40 #

    你好先生,
    你能告诉我如何在每一层确定神经元数量吗?因为我使用的是不同的数据集,我不知道每一层有多少神经元。

    • Jason Brownlee 2017年3月1日早上8:33 #

      嗨 Ananya,好问题。

      抱歉,关于如何配置神经网络,没有很好的理论。

      你可以通过反复试验来配置层中的神经元数量。同时也可以考虑调整 epoch 数和 batch size。

      • Ananya Mohapatra 2017年3月1日晚上4:42 #

        非常感谢您,先生。它成功了!🙂

  68. Jayant Sahewal 2017年2月28日晚上8:11 #

    嗨,Jason,

    这个博客非常有帮助。我想问一下收敛需要多长时间?

    我的数据集大约有 4000 条记录,3 个输入列和 1 个输出列。我提出了以下模型

    def create_model(dropout_rate=0.0, weight_constraint=0, learning_rate=0.001, activation=’linear’)
    # 创建模型
    model = Sequential()
    model.add(Dense(6, input_dim=3, init=’uniform’, activation=activation, W_constraint=maxnorm(weight_constraint)))
    model.add(Dropout(dropout_rate))
    model.add(Dense(1, init=’uniform’, activation=’sigmoid’))
    # Optimizer
    optimizer = Adam(lr=learning_rate)
    # 编译模型
    model.compile(loss=’binary_crossentropy’, optimizer=optimizer, metrics=[‘accuracy’])
    return model

    # 创建模型
    model = KerasRegressor(build_fn=create_model, verbose=0)
    # define the grid search parameters
    batch_size = [10]
    epochs = [100]
    weight_constraint = [3]
    dropout_rate = [0.9]
    learning_rate = [0.01]
    activation = [‘linear’]
    param_grid = dict(batch_size=batch_size, nb_epoch=epochs, dropout_rate=dropout_rate, \
    weight_constraint=weight_constraint, learning_rate=learning_rate, activation=activation)
    grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=5)
    grid_result = grid.fit(X_train, Y_train)

    我有一个 32 核的机器,拥有 64GB RAM,一个多小时都无法收敛。我可以看到所有核心都在忙碌,所以它正在使用所有核心进行训练。但是,如果我将输入神经元更改为 3,它大约在 2 分钟内收敛。

    Keras 版本:1.1.1
    Tensorflow 版本:0.10.0rc0
    theano 版本:0.8.2.dev-901275534cbfe3fbbe290ce85d1abf8bb9a5b203

    它正在使用 Tensorflow 后端。你能帮我理解发生了什么,或者指明正确的方向吗?你认为切换到 Theano 会有帮助吗?

    祝好,
    Jayant

  69. Animesh Mohanty 2017年3月1日晚上9:21 #

    你好先生,
    你能告诉我如何将代码的结果绘制成图表吗?我对代码做了一些调整,以便在不同的数据集上运行它。

    • Jason Brownlee 2017年3月2日早上8:16 #

      Animesh,你具体想画什么?

      • Animesh Mohanty 2017年3月2日晚上4:56 #

        输入层神经元数量和隐藏层神经元数量与准确率的关系。

  70. param 2017年3月2日凌晨12:15 #

    先生,你能解释一下
    此语句中使用的不同属性
    print(“%s: %.2f%%” % (model.metrics_names[1], scores[1]*100))

  71. Vijin K P 2017年3月2日凌晨4:01 #

    嗨,Jason,

    这是一个很棒的帖子。你能告诉我如何在 DNN 中确定以下内容吗?1. 隐藏层中的神经元数量
    2. 隐藏层的数量

    谢谢。
    Vijin

  72. Bogdan 2017年3月2日晚上11:48 #

    Jason,请告诉我你代码中的这些行

    seed = 7
    numpy.random.seed(seed)

    它们做什么?为什么这样做?

    还有一个问题是,为什么你将最后一部分称为“奖励:进行预测”?
    我认为 ANN 就是为此创建的。如果网络的输出就是你已知的内容,那有什么意义?

    • Jason Brownlee 2017年3月3日早上7:44 #

      它们对随机数生成器进行种子设置,以便在每次运行代码时生成相同的随机数序列。这是为了确保您获得与我相同的结果。

      但是我不确定它是否适用于 Keras。

      此处有更多关于机器学习中随机性的信息。
      https://machinelearning.org.cn/randomness-in-machine-learning/

      我在这篇教程中展示了如何构建和评估模型。独立预测部分是一个附加项。

  73. Sounak sahoo 2017年3月3日晚上7:39 #

    神经网络代码中的“seed”到底有什么作用?它做什么?

    • Jason Brownlee 2017年3月6日早上10:44 #

      Seed 指的是对随机数生成器进行种子设置,以便在每次运行示例时生成相同的随机数序列。

      目标是使示例 100% 可重现,但这对于像 Theano 和 TensorFlow 后端这样的符号数学库来说很难。

      有关机器学习中随机性的更多信息,请参阅此帖。
      https://machinelearning.org.cn/randomness-in-machine-learning/

  74. Priya Sundari 2017年3月3日晚上10:19 #

    先生,你好
    你能告诉我优化器和 binary_crossentropy 的确切作用吗?上面写着优化器用于搜索网络权重,我们具体指的是哪些权重?

  75. Bogdan 2017年3月3日晚上10:23 #

    如果我没记错的话,我评论过的那些行是在我们写的时候使用的

    init = ‘uniform’

    ?

  76. Bogdan 2017年3月3日晚上10:44 #

    你能更详细地解释一下 batch size 是什么吗?

    • Jason Brownlee 2017年3月6日早上10:50 #

      嗨 Bogdan,

      Batch size 是在权重根据累积误差更新之前,要显示给网络的模式数量。batch 越小,学习越快,但学习也越嘈杂(方差越大)。

      尝试探索不同的 batch size,看看它们对每个 epoch 的训练和测试性能的影响。

  77. Mohammad 2017年3月7日早上6:50 #

    亲爱的Jason
    首先,感谢您的精彩教程。
    我正在尝试使用每个数据包的前 500 个字节对计算机网络数据包进行分类,以识别其协议。我正在尝试使用一维卷积。为了简化任务,我只想进行二元分类,然后处理 10 种协议的多标签分类。这是我的代码,但准确率约为 0.63。我该如何提高性能?我应该使用 RNN 吗?
    ########
    model=Sequential()
    model.add(Convolution1D(64,10,border_mode=’valid’,
    activation=’relu’,subsample_length=1, input_shape=(500, 1)))
    #model.add(Convolution2D(32,5,5,border_mode=’valid’,input_shape=(1,28,28),))
    model.add(MaxPooling1D(2))
    model.add(Flatten())
    model.add(Dense(200,activation=’relu’))
    model.add(Dense(1,activation=’sigmoid’))
    model.compile(loss=’binary_crossentropy’,
    optimizer=’adam’,metrics=[‘accuracy’])
    model.fit(train_set, y_train,
    batch_size=250,
    nb_epoch=30,
    show_accuracy=True)
    #x2= get_activations(model, 0,xprim )
    #score = model.evaluate(t, y_test, show_accuracy = True, verbose = 0)
    #print(score[0])

  78. Damiano 2017年3月7日晚上10:13 #

    嗨 Jason,非常感谢您的精彩教程。我刚开始学习 Python 和机器学习。
    我正在修改代码,例如我更改了...

    这个

    # 创建模型
    model = Sequential()
    model.add(Dense(250, input_dim=8, init=’uniform’, activation=’relu’))
    model.add(Dense(200, init=’uniform’, activation=’relu’))
    model.add(Dense(200, init=’uniform’, activation=’relu’))
    model.add(Dense(1, init=’uniform’, activation=’sigmoid’))

    和这个

    model.fit(X, Y, nb_epoch=250, batch_size=10)

    然后我想为预测传递一些数组,所以...

    new_input = numpy.array([[3,88,58,11,54,24.8,267,22],[6,92,92,0,0,19.9,188,28], [10,101,76,48,180,32.9,171,63], [2,122,70,27,0,36.8,0.34,27], [5,121,72,23,112,26.2,245,30]])

    predictions = model.predict(new_input)
    print predictions # [1.0, 1.0, 1.0, 0.0, 1.0]

    这是正确的吗?在这个例子中,我使用了与 0 类相同的训练系列,但我得到了错误的结果。只有一个数组被正确预测。

    非常感谢!

  79. ANJI 2017年3月13日晚上8:48 #

    你好先生,
    你能告诉我如何纠正我下面的错误吗?它在模型训练时引发

    str(array.shape))
    ValueError: Error when checking model input: expected convolution2d_input_1 to have 4 dimensions, but got array with shape (68, 28, 28).

  80. Rimjhim 2017年3月14日晚上8:21 #

    我想要一个可以预测 sin 值的神经网络。此外,从给定的数据集中,我需要确定函数(例如,如果数据是 tan 或 cos,那么如何确定数据仅是 tan 或仅是 cos)。

    提前感谢

  81. Sudarshan 2017年3月15日晚上11:19 #

    Keras 已更新为 Keras 2.0。我在这里有一个更新版本的代码:https://github.com/sudarshan85/keras-projects/tree/master/mlm/pima_indians

  82. subhasish 2017年3月16日晚上5:09 #

    你好先生,
    我们可以在此中使用 PSO(粒子群优化)吗?如果可以,您能告诉我如何做吗?

    • Jason Brownlee 2017年3月17日早上8:25 #

      抱歉,我没有使用 PSO 来拟合神经网络权重的示例。

  83. Ananya Mohapatra 2017年3月16日晚上10:03 #

    你好先生,
    这个代码使用的是哪种类型的神经网络?因为有三种神经网络:前馈、径向基函数和循环神经网络。

    • Jason Brownlee 2017年3月17日早上8:28 #

      多层感知机(MLP)神经网络。一种经典的类型,源于 1980 年代。

  84. Diego 2017年3月17日凌晨3:58 #

    编译时遇到这个错误。

    sigmoid_cross_entropy_with_logits() 有一个意外的关键字参数 ‘labels’

    • Jason Brownlee 2017年3月17日早上8:30 #

      也许可以确认你的库(Keras、Theano 或 TensorFlow)是否都是最新的?

  85. Rohan 2017年3月20日凌晨5:20 #

    嗨,Jason!

    我正在尝试使用视频的两个奇数帧来预测偶数帧。因此,我需要将两个图像作为输入传递给网络,并得到一个图像作为输出。你能帮我处理第一个 model.add() 的语法吗?我的 X_train 的维度是 (190, 2, 240, 320, 3),其中 190 是奇数对的数量,2 是两个奇数图像,(240,320,3) 是每个图像的(高度,宽度,深度)。

  86. Herli Menezes 2017年3月21日早上8:33 #

    您好,Jason,
    感谢您提供的精彩教程。但我发现了一些问题
    像这样的警告

    1 – Warning (from warnings module)
    File “/usr/lib/python2.7/site-packages/keras/legacy/interfaces.py”, line 86
    call to the Keras 2 API: ' + signature)
    UserWarning: Update your
    Dense call to the Keras 2 API: Dense(12, activation=”relu”, kernel_initializer=”uniform”, input_dim=8)

    2 - 警告(来自 warnings 模块):
    文件 "/usr/lib/python2.7/site-packages/keras/legacy/interfaces.py",第 86 行
    '
    调用 Keras 2 API:' + signature)
    UserWarning: 请将您的 Dense 调用更新为 Keras 2 API:Dense(8, activation="relu", kernel_initializer="uniform")

    3 – 警告(来自 warnings 模块)
    File “/usr/lib/python2.7/site-packages/keras/legacy/interfaces.py”, line 86
    调用 Keras 2 API:' + signature)
    UserWarning: 请将您的
    Dense 调用更新为 Keras 2 API:Dense(1, activation=”sigmoid”, kernel_initializer=”uniform”)

    3 - 警告(来自 warnings 模块):
    文件 "/usr/lib/python2.7/site-packages/keras/models.py",第 826 行
    warnings.warn('fit 中的
    nb_epoch 参数'
    UserWarning: fit 中的 nb_epoch 参数已重命名为 epochs

    我认为这是由于某些包更新引起的。

    但是,预测的输出是一个零数组……
    例如:[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ….0.0]

    我正在 Linux 机器上运行,Fedora 24,
    Python 2.7.13 (默认,2017年1月12日,17:59:37)
    [GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] 在 linux2 上

    为什么?

    谢谢!

    • Jason Brownlee 2017年3月21日 上午8:45 #

      这些看起来是与最近的 Keras 2.0 版本相关的警告。

      它们看起来只是警告,您仍然可以运行示例。

      我不知道您为什么会得到全是零的输出。我将进行调查。

  87. Ananya Mohapatra 2017年3月21日 下午6:21 #

    你好先生,
    您能否帮助我使用上面给出的数据集构建一个循环神经网络?我在构建层方面遇到一些麻烦……

    • Jason Brownlee 2017年3月22日 上午7:56 #

      你好 Ananya,

      Pima Indian 糖尿病数据集是一个二元分类问题。它不适合循环神经网络,因为没有序列信息可供学习。

      • Ananya Mohapatra 2017年3月22日 下午8:04 #

        那么您能否告诉我循环神经网络在什么类型的数据集上能准确工作?我拥有癫痫患者的脑电图信号数据集……循环网络能用在这个上面吗?

        • Jason Brownlee 2017年3月23日 上午8:49 #

          如果它足够规律,可能会。

          LSTM 在具有规律性或清晰信号可检测的序列问题上表现出色。

  88. Shane 2017年3月22日 上午5:18 #

    你好 Jason,我有一个关于在教程代码运行过程中收到的错误的小问题……

    当我运行

    # 编译模型
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

    Python 返回以下错误:

    sigmoid_cross_entropy_with_logits() 有一个意外的关键字参数 ‘labels’

    • Jason Brownlee 2017年3月22日 上午8:09 #

      抱歉,Shane,我没见过这个错误。

      也许可以检查一下您的环境是否已更新到最新的深度学习库版本?

  89. Tejes 2017年3月24日 上午1:04 #

    嗨,Jason,
    感谢这篇精彩的文章。
    我出于好奇,使用 tensorflow 后端运行了您的代码。每次运行代码时,返回的准确率都不同。Theano 没有发生这种情况。您能告诉我为什么吗?

    提前感谢!

  90. Saurabh Bhagvatula 2017年3月27日 下午9:49 #

    嗨,Jason,
    我是深度学习的新手,正在向您学习教程,这在以前帮助我很好地理解了机器学习。
    在下面的代码中,我想知道为什么神经网络第一层的神经元数量与 input_dim 不同。
    # 创建模型
    model = Sequential()
    model.add(Dense(12, input_dim=8, init=’uniform’, activation=’relu’))
    model.add(Dense(8, init=’uniform’, activation=’relu’))
    model.add(Dense(1, init=’uniform’, activation=’sigmoid’))

    • Jason Brownlee 2017年3月28日 上午8:22 #

      您可以通过“input_dim”指定输入数量,您可以通过 Dense() 的第一个参数指定第一个隐藏层的神经元数量。

  91. Nalini 2017年3月29日 上午2:52 #

    嗨 Jason

    当使用此代码进行 k 折交叉验证时,它不起作用。请提供二元分类的 k 折交叉验证代码。

  92. trangtruong 2017年3月29日 下午7:04 #

    Jason,为什么我使用 evaluate 函数来获取我的模型在测试数据集上的准确率时,它返回的结果大于 1?我无法理解。

  93. enixon 2017年4月3日 上午3:08 #

    嘿 Jason,感谢这篇很棒的文章!我运行上面的代码时收到以下错误:

    TypeError: 收到未知关键字参数:{‘epochs’: 150}

    有什么想法为什么会这样?我无法使用 ‘epochs’、‘nb_epochs’ 等。

    • Jason Brownlee 2017年4月4日 上午9:07 #

      您需要更新到 Keras 版本 2.0 或更高版本。

  94. Ananya Mohapatra 2017年4月5日 下午9:30 #

    def baseline_model()
    # 创建模型
    model = Sequential()
    model.add(Dense(10, input_dim=25, init=’normal’, activation=’softplus’))
    model.add(Dense(3, init=’normal’, activation=’softmax’))
    # 编译模型
    model.compile(loss=’mean_squared_error’, optimizer=’adam’, metrics=[‘accuracy’])
    return model
    先生,这里使用了 mean_square_error 进行损失计算。它与 LMS 算法相同吗?如果不是,我们能否使用 LMS、NLMS 或 RLS 来计算损失?

  95. Ahmad Hijazi 2017年4月5日 下午10:19 #

    你好 Jason,非常感谢您的例子。

    我的问题是,在成功训练模型并获得例如 79.2% 的准确率后,我如何在新数据上测试此模型?

    例如,如果出现一个有新记录的新患者,我想为他预测结果(0 或 1),如何在代码中做到?

    • Jason Brownlee 2017年4月9日 下午2:36 #

      您可以在所有可用的训练数据上拟合模型,然后按如下方式对新数据进行预测:

  96. Perick Flaus 2017年4月6日 上午12:16 #

    谢谢 Jason,我们如何测试一个新患者是否会患糖尿病(0 或 1)?

    • Jason Brownlee 2017年4月9日 下午2:36 #

      在所有训练数据上拟合模型并调用

  97. Gangadhar 2017年4月12日 上午1:28 #

    杰森博士,

    在编译模型时,我遇到了以下错误:

    TypeError: compile() 收到意外的关键字参数 'metrics'

    无法解决以下错误。

    • Jason Brownlee 2017年4月12日 上午7:53 #

      确保您拥有最新版本的 Keras,v2.0 或更高版本。

  98. Omogbehin Azeez 2017年4月13日 上午1:48 #

    你好,先生,
    感谢您的文章。一个小问题,我的数据集有 24 个输入和 1 个二元输出(170 个实例,100 个 epoch,隐藏层=6 和 10 个批次,kernel_initializer=’normal’)。我使用 Tensor flow 和 keras 适配了您的代码。我的准确率在 98% 到 100% 之间。我担心我的模型会过拟合。我需要您的坦诚建议。先生,致以诚挚的问候。

    • Jason Brownlee 2017年4月13日 上午10:07 #

      是的,使用 k 折交叉验证来评估您的模型,以确保您没有欺骗自己。

      • Omogbehin Azeez 2017年4月14日 上午1:08 #

        谢谢您,先生

  99. Sethu Baktha 2017年4月13日 上午5:19 #

    嗨,Jason,
    如果我想使用糖尿病数据集(非 Pima) https://archive.ics.uci.edu/ml/datasets/Diabetes 来预测血糖,我需要从您的哪些教程和电子书开始……另外,数据当前格式的时间、代码和值是可直接使用的,还是需要将其转换为其他格式才能使用?

    谢谢你的帮助

    • Jason Brownlee 2017年4月13日 上午10:13 #

      这个过程将帮助您构建和处理您的数据集。
      https://machinelearning.org.cn/start-here/#process

      希望这些能作为一个开始有所帮助。

      • Sethu Baktha 2017年4月13日 上午10:25 #

        杰森博士,
        数据是时间序列(基于时间的数据),具有类别(20)和两个数字,一个用于胰岛素水平,另一个用于血糖水平……每个时间序列数据并不包含所有类别数据。例如,一个类别是早餐前的血糖,另一个类别是早餐后的血糖、午餐前和午餐后。有时一些这些类别数据是缺失的。我看了上面的链接,但它没有讨论时间序列、具有某些类别数据缺失的分类数据该怎么办……如果您的任何书籍能帮助澄清这些问题,请告诉我?

  100. Omogbehin Azeez 2017年4月14日 上午9:49 #

    你好,先生,

    在使用 ANN 模型之前,是否必须对数据进行标准化?我读过一些文章,作者坚持认为每个属性都应该在 [0,1] 的范围内进行比较,以获得有意义的模型。您对此有何看法?致以诚挚的问候。

    • Jason Brownlee 2017年4月15日 上午9:29 #

      是的。您必须将数据缩放到激活函数的边界。

  101. shiva 2017年4月14日 上午10:38 #

    你好 Jason,你真是太棒了。我是许多受益于您《机器学习大师 Python》一书的人之一。我正在处理一个医学图像分类问题。我有两类医学图像(每类有 1000 张 32*32 的图像)需要由卷积神经网络处理。您能否指导我如何将这些数据加载到 Keras 数据集中?或者如何在遵循您的简单步骤的同时使用我的数据?请帮忙。

    • Jason Brownlee 2017年4月15日 上午9:30 #

      将数据加载为 numpy 数组,然后您就可以与 Keras 一起使用了。

  102. Omogbehin Azeez 2017年4月18日 上午12:09 #

    你好,先生,

    我将您的代码与交叉验证和 ANN (Keras) 管道一起适配到我的模型中。它仍然给了我 100% 的准确率。我从 UCI 获得了数据(慢性肾脏疾病)。它有 400 个实例,24 个输入属性和 1 个二元属性。当我删除带有缺失数据的行时,我剩下 170 个实例。我的数据集对于(24 个输入层、24 个隐藏层和 1 个输出层 ANN,使用 adam 和 kernel initializer 为 uniform)来说太小了吗?

    • Jason Brownlee 2017年4月18日 上午8:32 #

      它并不太小。

      通常,训练数据集的大小really 取决于您打算如何使用模型。

      • Omogbehin Azeez 2017年4月18日 下午11:10 #

        感谢您的回复,我想我必须接受模型过拟合的问题。

  103. Padmanabhan Krishnamurthy 2017年4月19日 下午6:26 #

    嗨,Jason,

    很棒的教程。喜欢这个网站 🙂
    只是一个快速的问题:为什么您选择 adam 作为优化器而不是 sgd?此外,何时使用 sgd 优化,它具体包含什么?

    谢谢

    • Jason Brownlee 2017年4月20日 上午9:23 #

      ADAM 似乎始终在很少或无需定制的情况下运行良好。

      SGD 需要配置至少学习率和动量。

      尝试几种方法,并使用最适合您问题的方法。

      • Padmanabhan Krishnamurthy 2017年4月20日 下午4:32 #

        谢谢 🙂

  104. Omogbehin Azeez 2017年4月25日 上午8:13 #

    你好,先生,

    先生,您好,如何获取 keras ANN 的所有权重和偏差?致以诚挚的问候。

  105. Shiva 2017年4月27日 上午5:43 #

    嗨,Jason,
    我目前正在处理您书中提到的 IMDB 情感分析问题。我使用的是 Anaconda 3 和 Python 3.5.2。在尝试总结评论长度时,正如您在书中提到的那样,当我尝试执行命令时:

    result = map(len, X)
    print(“Mean %.2f words (%f)” % (numpy.mean(result), numpy.std(result)))

    它返回错误:不支持的操作数类型:‘map’ 和 ‘int’

    请帮助修改语法。期待您的回复……

    • Jason Brownlee 2017年4月27日 上午8:47 #

      很遗憾听到您遇到这个问题。也许可以注释掉那一行?
      或者修改它以删除格式,只打印原始的平均值和标准差供您查看?

  106. Elikplim 2017年5月1日 上午1:58 #

    您好,我对 Python、Numpy 和 Keras 还比较陌生(背景是 PHP、MYSQL 等)。如果存在 8 个输入变量和 1 个输出变量(总共 9 个),并且数组索引从零开始(根据我所了解的,它是一个基于 Python 列表构建的 Numpy 数组),并且顺序是 [行, 列],那么我们的输入变量 (X) 是否应该是 X = dataset[:,0:7](其中我们选择第 1 列到第 8 列,即索引 0 到 7),输出变量 (Y) 是否应该是 Y = dataset[:,8](其中我们选择第 9 列,即索引 8)?

  107. Jackie Lee 2017年5月1日 下午12:47 #

    我在预测部分遇到了麻烦。它抛出了 ValueError:检查模型输入时出错:expected dense_1_input to have shape (None, 502) but got array with shape (170464, 502)

    ### 进行预测 ###
    testset = numpy.loadtxt(“right_stim_FD1.csv”, delimiter=”,”)
    A = testset[:,0:502]
    B = testset[:,502]
    probabilities = model.predict(A, batch_size=10, verbose=1)
    predictions = float(round(a) for a in probabilities)
    accuracy = numpy.mean(predictions == B)
    #round predictions
    #rounded = [round(x[0]) for x in predictions]
    print(predictions)
    print(“预测准确率:%.2f%%” % (accuracy*100))

    • Jason Brownlee 2017年5月2日 上午5:55 #

      看起来您可能将整个数据集作为输出 (y) 而不是仅输出变量。

  108. Anastasios Selalmazidis 2017年5月2日 上午12:27 #

    你好,

    我有一个关于深度学习的问题。在本教程中,我们使用 Keras 构建了一个 MLP。这是深度学习,还是只是一个 MLP 反向传播?

  109. Eric T 2017年5月2日 下午8:59 #

    你好,
    您介意我将此代码用作学校项目中的简单网络示例吗?
    需要事先征求您的同意,因为我在本教程中找不到您允许任何人使用该代码的地方,而且我课程的伦理要求我这样做(当然,要注明出处)。
    诚挚的问候
    Eric T

  110. BinhLN 2017年5月7日 上午3:11 #

    嗨 Jason
    我有一个问题
    我的数据集有 500 条记录。但我老师想要我的数据集有 100,000 条记录。我必须有一个新的数据生成算法。请帮帮我。

  111. Dp 2017年5月11日 上午2:26 #

    您能否提供一个深度 CNN 代码,其中包含 25 层?在第一层卷积层中,滤波器大小应为 39x39,总共 64 个滤波器;在第 2 层卷积层中,为 21x21,32 个滤波器;在第 3 层卷积层中,为 11x11,64 个滤波器;第 4 层卷积层为 7x7,32 个滤波器。输入图像大小为 256x256。我对深度学习完全陌生,但如果您能为我编写代码,那将大有帮助。谢谢。

  112. Maple 2017年5月13日 下午12:58 #

    我必须跟踪 Facebook 指标。但结果非常低。请帮助我。
    我更改了输入,但没有改善。
    http://archive.ics.uci.edu/ml/datasets/Facebook+metrics

  113. Alessandro 2017年5月14日 上午1:01 #

    嗨,Jason,

    很棒的教程,感谢您的辛勤工作。

    我有一个问题,因为我是 keras 和 tensorflow 的初学者。
    我已经安装了 keras 和 tensorflow,都是最新版本,并且我运行了您的示例,但一直收到相同的错误:

    回溯(最近一次调用)
    File “CNN.py”, line 18, in
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    File “/Users/MacBookPro1/.virtualenvs/keras_tf/lib/python2.7/site-packages/keras/models.py”, line 777, in compile
    **kwargs)
    File “/Users/MacBookPro1/.virtualenvs/keras_tf/lib/python2.7/site-packages/keras/engine/training.py”, line 910, in compile
    sample_weight, mask)
    File “/Users/MacBookPro1/.virtualenvs/keras_tf/lib/python2.7/site-packages/keras/engine/training.py”, line 436, in weighted
    score_array = fn(y_true, y_pred)
    文件“/Users/MacBookPro1/.virtualenvs/keras_tf/lib/python2.7/site-packages/keras/losses.py”,第51行,在binary_crossentropy中
    return K.mean(K.binary_crossentropy(y_pred, y_true), axis=-1)
    文件“/Users/MacBookPro1/.virtualenvs/keras_tf/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py”,第2771行,在binary_crossentropy中
    logits=output)
    TypeError: sigmoid_cross_entropy_with_logits() got an unexpected keyword argument ‘labels’

    可以帮我吗?谢谢

    Alessandro

    • Jason Brownlee 2017年5月14日 上午7:30 #

      哎呀,我之前没见过这个错误。

      一些想法
      – 考虑尝试theano后端,看看是否有区别。
      – 尝试在keras用户组和slack频道搜索/发帖。
      – 尝试在stackoverflow或cross validated搜索/发帖。

      告诉我进展如何。

      • Alessandro 2017年5月14日 上午9:44 #

        嗨,Jason,

        我找到了问题所在。tensorflow安装过时了;所以我更新了它,一切
        都运行得很顺利。

        晚安,
        Alessandro

  114. Sheikh Rafiul Islam 2017年5月25日 下午3:36 #

    感谢Brownlee先生您精彩且易于理解的讲解

  115. WAZED 2017年5月29日 上午12:31 #

    嗨,Jason,
    非常感谢您精彩的教程。我有一个关于度量的问题。除了“准确率”之外,是否还有默认的方法来声明“精确率”和“召回率”?

    祝好
    WAZED

  116. chiranjib konwar 2017年5月29日 上午4:30 #

    嗨,Jason,

    请给我一份简短的说明,其中包含我可以从头开始学习深度学习的资源。感谢您准备的精彩内容。

    提前感谢

    是的,我的电子邮件是chiranjib.konwar@gmail.com

  117. Jeff 2017年6月1日 上午11:48 #

    为什么神经网络经常出错?

  118. kevin 2017年6月2日 下午5:53 #

    嗨,Jason,

    在应用fit方法时,我似乎遇到了一个错误

    ValueError: Error when checking input: expected dense_1_input to have shape (None, 12) but got array with shape (767, 8)

    我查找了这个问题,最常见的建议似乎是升级keras和theno,我做到了,但问题仍未解决。

  119. Hemanth Kumar K 2017年6月3日 下午2:15 #

    嗨,Jason,
    我卡在一个错误上
    TypeError: sigmoid_cross_entropy_with_logits() got an unexpected keyword argument ‘labels’
    我的tensor flow和keras版本是
    keras: 2.0.4
    Tensorflow: 0.12

    • Jason Brownlee 2017年6月4日 上午7:46 #

      很遗憾听到这个消息,我之前没见过这个错误。也许您可以向stackoverflow或keras用户组提问?

  120. xena 2017年6月4日 下午6:36 #

    有谁能告诉我这里用的是哪种神经网络吗?是MLP吗?

    • Jason Brownlee 2017年6月5日 上午7:40 #

      是的,它是一种多层感知器(MLP)前馈神经网络。

  121. Nirmesh Shah 2017年6月9日 下午11:00 #

    嗨,Jason,

    我在CPU的PC上成功运行了此代码。

    如果我必须在另一台包含GPU的PC上运行相同的代码,我应该添加哪一行才能确保它在GPU上运行?

    • Jason Brownlee 2017年6月10日 上午8:24 #

      代码将保持不变,您将更改Keras后端的配置。

      请参考TensorFlow或Theano文档。

  122. Prachi 2017年6月12日 下午7:30 #

    如果我想训练我的神经网络来检测行李是否被遗弃,该怎么做?

  123. Ebtesam 2017年6月14日 下午11:15 #


    我正在构建一个神经机器翻译模型,但得分是0,我不知道为什么。

  124. Sarvottam Patel 2017年6月20日 下午7:31 #

    Jason,首先,我非常非常感谢您让我完美地理解了这一点。在迭代150次后,我遇到了一个错误。

    文件“keras_first_network.py”,第53行,在
    print(“\n%s: %.2f” %(model.metrics_names[1]*100))
    TypeError: not enough arguments for format string

    • Sarvottam Patel 2017年6月20日 下午8:05 #

      抱歉,先生,我的错,我写错了。

    • Jason Brownlee 2017年6月21日 上午8:12 #

      确认您已准确复制该行。

  125. Joydeep 2017年6月30日 下午4:15 #

    Jason博士,您好,

    感谢您提供Keras入门教程。

    我使用了以下代码段,直接从URL加载数据集,而不是下载和保存,这使得代码更加 streamlined,无需导航到其他地方。

    # 加载皮马印第安人糖尿病数据集
    datasource = numpy.DataSource().open(“http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data”)
    dataset = numpy.loadtxt(datasource, delimiter=”,”)

  126. Yvette 2017年7月7日 下午9:01 #

    感谢这个有用的资源!

  127. Andeep 2017年7月10日 上午1:14 #

    尊敬的布朗利博士,

    非常感谢您提供的这个出色的教程!
    如果您能回答一些问题,我将不胜感激

    1. “numpy.random.seed(7)”中的7是什么意思?

    2. 在我的例子中,我有3个输入神经元和2个输出神经元。这是正确的表示法吗?
    X = dataset[:,0:3]
    Y = dataset[:,3:4]?

    3. 批次大小是指每个epoch使用多少训练数据,对吗?
    我以为我们必须使用整个训练数据集进行训练。在这种情况下,我会将批次大小确定为通过实验等获得的训练数据对的数量。在您的示例中,批次(大小为10)是否意味着计算机在每个epoch中始终使用相同的10个训练数据,还是在每个epoch之前都随机选择10个训练数据?

    4. 评估模型时,损失(例如,loss: 0.5105 – acc: 0.7396)是什么意思?
    它是输出神经元的误差函数(例如,mean_squared_error)值的总和吗?

  128. Patrick Zawadzki 2017年7月11日 上午5:35 #

    有什么方法可以查看这些输入之间的关系吗?本质上是了解哪些输入对输出的影响最大,或者哪些输入对影响最大?

    也许可以将其与无监督深度学习相结合?如果可能的话,我希望对开发的网络有更少的“黑箱”。感谢您提供的精彩内容!

  129. Bernt 2017年7月13日 下午10:12 #

    嗨,Jason,
    感谢您分享您的技能和能力。

    我想研究每次epoch运行之间权重和预测的变化。
    我已经尝试使用model.train_on_batch方法和epoch=1、batch_size等于所有样本的model.fit方法。

    但似乎模型没有保存更新后的权重。
    我在之前和之后打印了预测,但没有看到评估分数有变化。

    以下是部分代码。

    有什么想法吗?
    谢谢。

    # 编译模型
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

    # 评估模型
    scores = model.evaluate(X, Y)
    print(“\n%s: %.2f%%” % (model.metrics_names[1], scores[1]*100))

    # 运行一次模型训练,用X和Y进行比较
    model.train_on_batch(X, Y)

    # 拟合模型
    model.fit(X, Y, epochs=1, batch_size=768)

    scores = model.evaluate(X, Y)
    print(“\n%s: %.2f%%” % (model.metrics_names[1], scores[1]*100))

    • Jason Brownlee 2017年7月14日 上午8:29 #

      抱歉,我还没有探索过以这种方式评估Keras模型。

      这可能是一个错误,我建议准备一个最小化的示例来演示问题,并将其发布到Keras GitHub issues上。

  130. iman 2017年7月18日 下午11:18 #

    嗨,我将此应用于泰坦尼克号数据集,但预测值均为0.4。您建议
    # 创建模型
    model = Sequential()
    model.add(Dense(12, input_dim=4, activation=’relu’))
    model.add(Dense(4, activation=’relu’))
    model.add(Dense(1, activation=’sigmoid’))

    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’]) #’sgd’

    model.fit(X, Y, epochs=15, batch_size=10)

  131. Camus 2017年7月19日 上午2:14 #

    Jason博士,您好,
    这可能是一个愚蠢的问题,但我找不到如何做到这一点……我是一名神经网络初学者。
    我拥有数量大致相同的输入(7个)和一个输出。此输出可以接受-3000到+3000之间的数字。
    我想在python中构建一个神经网络模型,但我不知道如何做到。
    您是否有输出与0-1不同的示例?
    提前感谢

    Camus

    • Jason Brownlee 2017年7月19日 上午8:28 #

      请确保您已对数据进行缩放,然后使用上述教程开始。

  132. Khalid Hussain 2017年7月21日 下午11:28 #

    你好 Jason Brownlee

    我使用的是相同的数据“pima-indians-diabetes.csv”,但所有预测值都小于1且为小数,无法区分任何类别。

    如果我四舍五入,它们都会变成0。

    我使用的是model.predict(x)函数。

    您能否指导我哪里做错了,或者我如何才能获得正确的预测值?

    谢谢你

    • Jason Brownlee 2017年7月22日 上午8:36 #

      请考虑您已从教程中准确复制了所有代码。

  133. Ludo 2017年7月25日 下午6:59 #

    你好 Jason,

    感谢您提供的精彩示例。我有一些评论。

    – 您为什么选择“12”个输入的隐藏层?而不是24 / 32……这是任意的吗?
    – 关于epochs和batch_size的同样问题?

    这些值非常敏感!我尝试了32个输入的第一个层,epochs=500和batch_size=1000,结果却大不相同……我的准确率是65%。

    感谢您的帮助。
    此致。

    • Jason Brownlee 2017年7月26日 上午7:50 #

      是的,它是任意的。调整模型的参数以适应您的问题。

  134. Almoutasem Bellah Rajab 2017年7月25日 下午7:32 #

    哇,您一年多后还在回复评论!!!……您太棒了,谢谢……

  135. Jane 2017年7月26日 上午1:23 #

    感谢您的教程,我觉得它对我开始使用Keras非常有帮助。我以前尝试过TensorFlow,但发现它非常难以使用。不过我有一个问题。我已经安装了Theano和TensorFlow,我怎么知道Keras正在使用哪个后端?再次感谢!

    • Jason Brownlee 2017年7月26日 上午8:02 #

      Keras每次运行代码时都会打印出它使用的后端。

      您可以在Keras配置文件(~/.keras/keras.json)中更改后端,该文件看起来像

  136. Masood Imran 2017年7月28日 上午12:00 #

    你好 Jason,

    我对机器学习或评估深度学习模型的理解几乎为0。但是,这篇文章给了我很多信息。它以简单易懂的语言进行了解释。

    非常感谢您提供的这篇文章。您能推荐一些好的读物来进一步探索机器学习或深度学习模型吗?

  137. Peggy 2017年8月3日 下午7:14 #

    如果我训练了预测模型或神经网络函数脚本,如何在将供最终用户使用的应用程序中利用它们进行预测?我想使用python,但似乎我必须在Python中重新进行训练。有没有一种方法可以重写Python脚本而不重新训练,然后只调用预测函数?

  138. Shane 2017年8月8日 下午2:38 #

    Jason,我使用您的教程安装了运行此教程所需的所有内容。我遵循了您的教程并成功运行了生成的程序。您能否描述一下输出的含义?我想感谢您提供非常有信息量的教程。

    • Shane 2017年8月8日 下午2:39 #

      768/768 [==============================] – 0s – loss: 0.4807 – acc: 0.7826
      第 148 周期/150
      768/768 [==============================] – 0s – loss: 0.4686 – acc: 0.7812
      第 149 周期/150
      768/768 [==============================] – 0s – loss: 0.4718 – acc: 0.7617
      第 150 周期/150
      768/768 [==============================] – 0s – loss: 0.4772 – acc: 0.7812
      32/768 [>………………………..] – ETA: 0s
      acc: 77.99%

      • Jason Brownlee 2017年8月8日 下午5:12 #

        这是对模型训练的总结。

        最后一行评估了模型预测的准确性——主要是为了演示如何进行预测。

    • Jason Brownlee 2017年8月8日 下午5:11 #

      Shane,干得好。

      哪个输出?

  139. Bene 2017年8月9日 上午1:02 #

    你好Jason,我真的很喜欢你的工作,它帮助我很多,迈出了第一步。

    但我对numpy的东西不太熟悉。

    所以我的问题是

    dataset = numpy.loadtxt(“pima-indians-diabetes.csv”, delimiter=”,”)
    # 分割为输入 (X) 和输出 (Y) 变量
    X = dataset[:,0:8]
    Y = dataset[:,8]

    我明白了numpy.loadtxt是从cvs文件中提取信息

    但括号里的东西是什么意思,比如X = dataset[:,0:8]

    为什么是“:”以及为什么是0:8?

    这可能非常愚蠢,但我找不到好的在线解释 😀

    非常感谢!

  140. Chen 2017年8月12日 下午5:43 #

    我可以将其翻译成中文并发布到网上,以便让其他中国人阅读您的文章吗?

  141. Deep Learning 2017年8月12日 下午7:36 #

    看起来使用这行代码

    np.random.seed(5)

    ……是多余的,也就是说,当使用相同的配置在相同的数据上训练相同的模型时,Keras在循环中的输出将产生相似的各种结果,无论它是否被设置,或者设置为哪个数字。还是我遗漏了什么?

  142. Deep Learning 2017年8月14日 上午3:12 #

    顺便说一句,好帖子 > https://machinelearning.org.cn/evaluate-skill-deep-learning-models/

    感谢分享。最近一直在思考准确率的问题,感觉目前很多常用工具的开箱即用方式在这方面有点“一团糟”。我认为很多非博士/非专家的群体(大多数人)至少在开始时会很容易感到困惑,并犯你帖子中指出的那些错误。

    感谢您在该领域做出的所有杰出贡献!

    • Jason Brownlee 2017年8月14日 上午6:26 #

      很高兴它有帮助。

      • Haneesh 2019年12月7日 下午10:36 #

        嗨,Jason,

        我实际上正在尝试寻找“垃圾邮件过滤器用于Quora问题”,我有一个包含0和1标签以及问题列的数据集。请告知我构建此类模型的途径和方法。

        谢谢

  143. RATNA NITIN PATIL 2017年8月14日 下午8:16 #

    Jason您好,感谢您提供的精彩教程。
    我可以使用遗传算法进行特征选择吗?
    如果可以,您能否提供相关链接?
    提前感谢。

    • Jason Brownlee 2017年8月15日 上午6:34 #

      当然。抱歉,我没有提供任何示例。

      通常,计算机速度很快,因此通过穷举搜索测试所有组合可能更容易。

  144. sunny1304 2017年8月15日 下午3:44 #

    嗨,Json,
    感谢您精彩的教程。
    我有一个问题想请教您。

    关于如何确定我们网络中的神经元数量,您有什么指导吗?
    例如,您在第一层使用了12个神经元,在第二层使用了8个神经元。
    您是如何决定的?

    谢谢

    • Jason Brownlee 2017年8月15日 下午4:58 #

      没有,无法通过分析确定网络的配置。

      我使用试错法。您可以进行网格搜索、随机搜索,或者从教程或论文中复制配置。

  145. yihadad 2017年8月16日 下午6:53 #

    嗨,Json,
    感谢您提供精彩的教程。

    运行一个由CNN生成的模型需要多少RAM、CPU?

    谢谢

    • Jason Brownlee 2017年8月17日 上午6:39 #

      这取决于您用于拟合模型的数据和模型的大小。

      非常大的模型可能需要500MB或更多的RAM。

  146. Ankur 2017年9月1日 上午3:15 #

    嗨,
    请告诉我,如何在Keras中可视化完整的神经网络……

    我正在寻找完整的架构——例如输入层、隐藏层、输出层的神经元数量以及权重。

    请看下面的链接,有人使用R中的neuralnet包创建了一个漂亮的可视化/架构。
    请告诉我,是否可以在KERAS中创建这样的模型

    https://www.r-bloggers.com/fitting-a-neural-network-in-r-neuralnet-package/

    • Jason Brownlee 2017年9月1日 上午6:50 #

      使用Keras可视化API。
      https://keras.org.cn/visualization/

    • ASAD 2017年10月17日 上午3:23 #

      ANKUR你好,,,,你好吗?

      你尝试了Jason Brownlee建议的Keras可视化吗?
      如果你尝试过了,请发代码给我,我也在尝试但没成功……

      请指导我。

  147. Adam 2017年9月3日 上午1:45 #

    非常感谢Brownlee博士提供的精彩教程,

    我有一个关于您代码的问题。
    参数 metrics=[‘accuracy’]在代码中是否必需?它会改变神经网络的结果,还是仅仅用于在编译时向我显示准确率?

    谢谢你!!

  148. PottOfGold 2017年9月5日 上午12:14 #

    嗨,Jason,

    您的工作非常出色。对我帮助很大。
    我最近偶然发现了一件我无法理解的事情。

    对于pimas数据集,您提到
    <>
    当我查看pimas数据集的表格时,样本在行中,特征在列中,因此您的输入维度是列的数量。据我所见,您没有更改表格。

    对于神经网络,输入通常是:样本=列,特征=行?
    Keras对此有何不同?或者我可以使用这两种形状吗?如果是,那么在网络构建中有何区别?

    谢谢你!!

    • Jason Brownlee 2017年9月7日 下午12:36 #

      不,特征是列,行是实例或样本。

      • PottOfGold 2017年9月7日 下午3:35 #

        谢谢! 🙂
        我因此进行了很多讨论。
        在Andrew Ng的新Coursera课程中,它被解释为样本=列,特征=行,但他当然不使用Keras,而是从头开始编程神经网络。

        • Jason Brownlee 2017年9月9日 上午11:38 #

          我对此表示怀疑,我认为您可能弄混了。列永远不是样本。

          • PottOfGold 2017年10月6日 下午6:26 #

            这就是我想的,但我查阅了新的Coursera课程(deeplearning.ai)的表示法,其中提到:m是数据集中的样本数量,n是输入大小,其中X的n x m次方是输入矩阵……
            但无论如何,您帮助了我!谢谢。🙂

  149. Lin Li 2017年9月16日 上午1:50 #

    Jason您好,非常感谢您的教程,它对我帮助很大。我需要您帮助解决以下问题。
    我复制了代码并运行了它。虽然我得到了分类结果,但在过程中出现了一些警告消息。如下:

    警告(来自警告模块)
    File “C:\Users\llfor\AppData\Local\Programs\Python\Python35\lib\site-packages\keras\callbacks.py”, line 120
    % delta_t_median)
    UserWarning: Method on_batch_end() is slow compared to the batch update (0.386946)。请检查您的回调。

    我不知道为什么,也找不到任何答案。期待您的回复。再次感谢!

    • Jason Brownlee 2017年9月16日 上午8:43 #

      抱歉,我以前没见过这条消息。它看起来像一个警告,您也许可以忽略它。

      • Lin Li 2017年9月16日 下午12:24 #

        谢谢您的回复。我是一名深度学习初学者。我想暂时搁置它。

  150. Sagar 2017年9月22日 下午2:51 #

    嗨,Jason,
    很棒的文章,点赞!当我尝试在命令提示符上运行文件时,我遇到了这个错误。有什么建议吗?感谢您的回复。

    #######################################################################
    C:\Work\ML>python keras_first_network.py
    使用 TensorFlow 后端。
    2017-09-22 10:11:11.189829: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\
    36\tensorflow\core\platform\cpu_feature_guard.cc:45] TensorFlow库未
    针对AVX指令进行编译,但您的机器上存在这些指令,并且
    可以加速CPU计算。
    2017-09-22 10:11:11.190829: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\
    36\tensorflow\core\platform\cpu_feature_guard.cc:45] TensorFlow库未
    36\tensorflow\core\platform\cpu_feature_guard.cc:45] TensorFlow库未
    针对AVX2指令进行编译,但您的机器上存在这些指令,并且
    32/768 [>………………………..] – ETA: 0s
    可以加速CPU计算。
    #######################################################################

    • acc: 78.52%

      Jason Brownlee 2017年9月23日 上午5:35 #

      • 看起来是警告消息,可以忽略。

        Sagar 2017年9月24日 上午3:52 #

        • 谢谢,我知道问题出在哪里了。根据第6节,我在调用“model.fit()”时将verbose参数设置为0。现在所有epoch都会打印出来了。

          很高兴听到这个消息。

  151. Jason Brownlee 2017年9月24日 上午5:17 #

    嗨,Jason,

    Valentin 2017年9月26日 下午6:35 #
    感谢您的精彩文章。清晰明了。
    我在安装Keras时遇到了一些问题,但有人建议我在前面加上
    tf.contrib.keras

    所以我的代码是这样的
    model=tf.contrib.keras.models.Sequential()

    Dense=tf.contrib.keras.layers.Dense
    1,1,0,0,8
    1,2,1,0,4
    1,0,0,1,5
    1,0,1,0,7
    0,1,0,0,8
    1,4,1,0,4
    1,0,2,1,1
    1,0,1,0,7

    现在我尝试用一个小数据文件训练Keras,看看效果如何。
    前4列是输入,第5列是输出。
    我使用与您文章相同的代码进行训练(调整输入数量),
    但网络的准确率只有12.5%。

    谢谢,
    Valentin

  152. 我在这里有一份关于提高模型性能的好建议。

    嗨,Jason,

    Priya 2017年10月3日 下午2:28 #

    我尝试用以下方式替换pima数据为随机数据:
    X_train = np.random.rand(18,61250)
    X_test = np.random.rand(18,61250)
    0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0,])
    Y_train = np.array([0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0,
    1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,])

    Y_test = np.array([1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0,

    _, input_size = X_train.shape #将此放入第一个dense层的input_dim中

    predictions = model.predict(X_test)
    我移除了predictions的round(),以便可以看到完整值,然后将我的随机测试数据插入到model.fit()中。
    print(preds)

    preds = [x[0] for x in predictions]

    model.fit(X_train, Y_train, epochs=100, batch_size=10, verbose=2, validation_data=(X_test,Y_test))

    [0.49525392, 0.49652839, 0.49729034, 0.49670222, 0.49342978, 0.49490061, 0.49570397, 0.4962129, 0.49774086, 0.49475089, 0.4958384, 0.49506786, 0.49696651, 0.49869373, 0.49537542, 0.49613148, 0.49636957, 0.49723724]

    我发现了一些奇怪的地方;我期望预测值在0.50左右,加上或减去一些,但相反,我得到了这个。

    谢谢,
    这接近0.50但总是小于0.50。我运行了几次,使用了不同的随机种子,所以这并非巧合。您对此有何解释?

    • Priya

      Jason Brownlee 2017年10月3日 下午3:46 #

    • 也许计算您训练数据的平均值并与预测值进行比较。这可能只是简单的采样误差。

      Priya 2017年10月4日 上午1:02 #

  153. 我发现我在拟合模型之前就进行了预测。(我想这可能意味着网络还没有根据数据的分布进行调整。)

    你好 Jason,

    Saurabh 2017年10月7日 上午5:59 #
    我尝试在我的笔记本电脑上训练这个模型,效果很好。但我尝试在google-cloud上用与您示例-5相同的说明来训练这个模型。但它失败了。

  154. 我在这里有关于在AWS上运行的说明。

    tobegit3hub 2017年10月12日 下午6:40 #

    • 好帖子。感谢分享。

      不客气。

  155. Jason Brownlee 2017年10月13日 上午5:45 #

    嗨,Jason,
    Manoj 2017年10月12日 下午11:43 #

  156. 是的,您可以将其保存到文件中。请参阅此教程。

    Cam 2017年10月23日 下午6:11 #

    我在这个示例的`model.fit()`行中遇到语法错误。如果我同时安装了theano和tensorflow,这是否是由于库冲突?

  157. Diego Quintana 2017年10月25日 上午7:37 #

    Jason您好,感谢您的示例。

    如何预测X的单个元素?X[0]会引发ValueError。

    ValueError: Error when checking : expected dense_1_input to have shape (None, 8) but got array with shape (8, 1)

    谢谢!

  158. Shahbaz Wasti 2017年10月28日 下午1:30 #

    尊敬的先生,
    我已经按照您的指示安装和配置了环境,但在运行程序时出现了以下错误:

    “from keras.utils import np_utils”

  159. Zhengping 2017年10月30日 上午12:12 #

    Jason您好,感谢您的精彩教程。我刚刚学习并重现了您在“Python机器学习项目入门(一步一步)”中的程序,没有遇到问题。现在尝试这个,在`model = Sequential()`这一行遇到了麻烦,因为交互式窗口抛出了:NameError: name ‘Sequential’ is not defined。我尝试在谷歌搜索,但找不到解决方案。我已经按照您的示例代码进行了导入,如`from keras.models import Sequential`。我将其原样复制了。感谢您的帮助。

    • Zhengping 2017年10月30日 上午12:14 #

      我在Visual Studio Community版本中的Anaconda 4.4.0环境中运行您的示例。已按照您早期教程的指示安装了相关包。

      • Zhengping 2017年10月30日 上午12:18 #

        >> # create model
        … model = Sequential()

        回溯(最近一次调用)
        文件“”,第2行,在
        NameError: name ‘Sequential’ is not defined
        >>> model.add(Dense(12, input_dim=8, init=’uniform’, activation=’relu’))
        回溯(最近一次调用)
        File “”, line 1, in
        AttributeError: ‘SVC’ object has no attribute ‘add’

    • Jason Brownlee 2017年10月30日 上午5:38 #

      看起来您需要安装Keras。我这里有一篇关于如何安装的教程。
      https://machinelearning.org.cn/setup-python-environment-machine-learning-deep-learning-anaconda/

  160. Akhil 2017年10月30日 下午5:04 #

    Jason您好,

    非常感谢您提供的精彩教程。

    我有一个问题。

    我想使用您的代码来预测未知样本的分类(1或0)。我是否应该创建一个通用的csv文件,其中包含训练(已知)和测试(未知)数据?其中,对于已知数据,“分类”列将具有已知值1或0,对于未知数据,是否应将该列留空(让代码决定结果)?

    非常感谢

  161. Guilherme 2017年11月3日 上午1:26 #

    嗨,Jason,

    这真的很酷!我惊呆了!非常感谢您让初学者也能轻松上手。我有几个问题:

    1)权重在哪里?我可以保存和/或检索它们吗?

    2)如果我想训练包含狗和猫的图像,然后询问神经网络一张新图像是狗还是猫,我该如何将输入图像作为数组传递,以及如何将输出结果“猫”或“狗”?

    再次感谢,做得太棒了!

  162. Michael 2017年11月5日 上午8:33 #

    嗨,Jason,

    您是否了解一个Python工具/包,可以像教程中那样构建神经网络,但适用于数据流挖掘?

    谢谢,
    Michael

  163. bea 2017年11月8日 上午1:58 #

    您好。能否请您解释一下为什么您将网络构建为具有12个神经元的第一层?

    “第一层有12个神经元,期望8个输入变量。第二隐藏层有8个神经元,最后输出层有1个神经元来预测类别(糖尿病发作或未发作)……”

    开始时难道不应该有8个神经元吗?

    谢谢

    • Jason Brownlee 2017年11月8日 上午9:28 #

      输入层有8个,第一个隐藏层有12个。我通过一些试错法选择了12。

  164. Guilherme 2017年11月9日 上午12:54 #

    嗨,Jason,

    您是否有,或者是否可以推荐一个初学者级别的图像分割方法,该方法使用深度学习?例如,我想训练一个神经网络来自动“查找”图像中的某个特征。

    谢谢!

    • Jason Brownlee 2017年11月9日 上午10:00 #

      抱歉,我没有图像分割的示例,也许将来会有。

  165. Andy 2017年11月12日 下午6:56 #

    嗨,Jason,

    我几周前才开始我的DL训练。根据我在课程中学到的,为了训练NN的参数,我们需要运行前向和后向传播;然而,看看您的Keras示例,我找不到任何这些传播过程。这是否意味着Keras有自己的机制来查找参数,而不是使用前向和后向传播?

    谢谢!

  166. Badr 2017年11月13日 上午11:42 #

    嗨,Jason,

    您能解释一下我为什么会得到以下输出吗?

    ValueError 回溯 (最近一次调用)
    in ()
    —-> 1 model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    2 model.fit(X, Y, epochs=150, batch_size=10)
    3 scores = model.evaluate(X, Y)
    4 print(“\n%s: %.2f%%” % (model.metrics_names[1], scores[1]*100))

    /Users/badrshomrani/anaconda/lib/python3.5/site-packages/keras/models.py in compile(self, optimizer, loss, metrics, sample_weight_mode, **kwargs)
    545 metrics=metrics,
    546 sample_weight_mode=sample_weight_mode,
    –> 547 **kwargs)
    548 self.optimizer = self.model.optimizer
    549 self.loss = self.model.loss

    /Users/badrshomrani/anaconda/lib/python3.5/site-packages/keras/engine/training.py in compile(self, optimizer, loss, metrics, loss_weights, sample_weight_mode, **kwargs)
    620 loss_weight = loss_weights_list[i]
    621 output_loss = weighted_loss(y_true, y_pred,
    –> 622 sample_weight, mask)
    623 if len(self.outputs) > 1
    624 self.metrics_tensors.append(output_loss)

    /Users/badrshomrani/anaconda/lib/python3.5/site-packages/keras/engine/training.py in weighted(y_true, y_pred, weights, mask=None)
    322 def weighted(y_true, y_pred, weights, mask=None)
    323 # score_array has ndim >= 2
    –> 324 score_array = fn(y_true, y_pred)
    325 if mask is not None
    326 # Cast the mask to floatX to avoid float64 upcasting in theano

    /Users/badrshomrani/anaconda/lib/python3.5/site-packages/keras/objectives.py in binary_crossentropy(y_true, y_pred)
    46
    47 def binary_crossentropy(y_true, y_pred)
    —> 48 return K.mean(K.binary_crossentropy(y_pred, y_true), axis=-1)
    49
    50

    /Users/badrshomrani/anaconda/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py in binary_crossentropy(output, target, from_logits)
    1418 output = tf.clip_by_value(output, epsilon, 1 – epsilon)
    1419 output = tf.log(output / (1 – output))
    -> 1420 return tf.nn.sigmoid_cross_entropy_with_logits(output, target)
    1421
    1422

    /Users/badrshomrani/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/nn_impl.py in sigmoid_cross_entropy_with_logits(_sentinel, labels, logits, name)
    147 # pylint: disable=protected-access
    148 nn_ops._ensure_xent_args(“sigmoid_cross_entropy_with_logits”, _sentinel,
    –> 149 labels, logits)
    150 # pylint: enable=protected-access
    151

    /Users/badrshomrani/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/nn_ops.py 中 _ensure_xent_args(name, sentinel, labels, logits)
    1696 如果 sentinel 不是 None
    1697 raise ValueError(“只能使用 `%s” 括起来的名称参数调用”
    -> 1698 “命名参数(labels=..., logits=..., ...)” % name)
    1699 如果 labels 是 None 或 logits 是 None
    1700 raise ValueError(“必须同时提供 labels 和 logits。”)

    ValueError: 只能使用 `sigmoid_cross_entropy_with_logits` 的命名参数(labels=..., logits=..., ...)调用

    • Jason Brownlee 2017年11月14日上午10:05 #

      也许可以仔细检查一下您是否安装了最新版本的 Keras 和 TensorFlow 库?!

  167. Badr 2017年11月14日上午10:50 #

    Keras 已过时

  168. Mikael 2017年11月22日上午8:20 #

    Jason,您好,感谢您提供的简短教程,这对于通过一个简单的例子来实际动手非常有帮助。
    我尝试了 5 种不同的参数,并获得了一些有趣的结果,想看看会发生什么。不幸的是,我没有记录运行时间。

    测试 1 测试 2 测试 3 测试 4 测试 5 测试 6 测试 7
    层数 3 3 3 3 3 3 4
    训练集 768 768 768 768 768 768 768
    迭代次数 150 100 1000 1000 1000 150 150
    更新率 10 10 10 5 1 1 5
    错误数 173 182 175 139 161 169 177
    值 768 768 768 768 768 768 768
    % 错误 23.0000% 23.6979% 22.7865% 18.0990% 20.9635% 22.0052% 23.0469%

    我似乎看不到任何趋势……这可能有助于我调整超参数。

    您对此有什么建议吗?

  169. Nikolaos 2017年11月28日上午10:58 #

    您好,我尝试使用 fer2013.csv 实现上面的示例,但我收到一个错误,能否帮助我正确实现?

    • Jason Brownlee 2017年11月29日上午8:10 #

      抱歉,我无法调试您的代码。

      问题究竟是什么?

  170. Tanya 2017年12月2日上午12:06 #

    你好,
    我有一个比较普遍的问题。
    我需要为餐厅销售进行预测(即我需要根据历史每日销售数据、天气状况(如温度、降雨等)、官方节假日和淡旺季来预测 4 种餐点)。我需要使用神经网络来进行此预测。
    不幸的是,我 Python 技术不太熟练。我的电脑上安装了 Python 2.7 和 Anaconda。我正在尝试通过您的代码来学习,Brownlee 先生。但是不知为何,我在 Spyder 中无法运行代码。您能否告诉我需要在我的电脑上安装什么版本的 Python 和 Anaconda,以及在哪个环境中(jupyterlab、notebook、qtconsole、spyder 等)可以运行代码,这样才能正常工作而不会从一开始就报错?
    我将非常感谢您的回复
    KG
    Tanya

  171. Eliah 2017年12月3日上午10:53 #

    Brownlee 博士,您好。

    我看了这篇教程,有一个关于从二进制文件读取数据的问题?例如,我正在使用神经网络解决滑动拼图 n-puzzle 问题,但我似乎在获取二进制文件中的数据以及生成 n-puzzle 解决所需的移动次数方面遇到了麻烦。我不确定您是否遇到过这种情况,但任何帮助都将不胜感激。

    • Jason Brownlee 2017年12月4日上午7:43 #

      抱歉,我不知道您的二进制文件。

      也许在加载数据后,您可以将其转换为 numpy 数组,以便将其提供给神经网络?

      • Eliah 2017年12月4日上午9:28 #

        感谢您的提示,我会尝试的。

  172. Wafaa 2017年12月7日下午4:59 #

    非常非常感谢您提供所有精彩的教程。

    如果我想在输入层之后添加批处理层,应该如何做?

    因为我将此教程应用于不同的数据集和特征,我认为我需要进行归一化或标准化,并且我想以最简单的方式进行。

    谢谢你,

  173. zaheer 2017年12月9日上午3:03 #

    感谢分享如此精彩的教程,对我帮助很大。我想从上面的示例中打印混淆矩阵。还有另一个问题。
    如果我有
    20 个输入变量
    1 个类标签(二元的)
    和 400 个实例
    我将如何知道,如何设置第一层、隐藏层和输出层的密集层参数。就像上面的示例中您放置的那样。12、8、1

    • Jason Brownlee 2017年12月9日上午5:44 #

      我建议通过试错来配置隐藏层中的神经元数量,以了解哪种方法最适合您的特定问题。

  174. zaheer 2017年12月9日上午3:29 #

    C:\Users\zaheer\AppData\Local\Programs\Python\Python36\python.exe C:/Users/zaheer/PycharmProjects/PythonBegin/Bin-CLNCL-Copy.py
    使用 TensorFlow 后端。
    回溯(最近一次调用)
    File “C:/Users/zaheer/PycharmProjects/PythonBegin/Bin-CLNCL-Copy.py”, line 28, in
    model.fit(x_train , y_train , epochs=100, batch_size=100)
    File “C:\Users\zaheer\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\models.py”, line 960, in fit
    validation_steps=validation_steps)
    File “C:\Users\zaheer\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py”, line 1574, in fit
    batch_size=batch_size)
    File “C:\Users\zaheer\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py”, line 1407, in _standardize_user_data
    exception_prefix=’input’)
    File “C:\Users\zaheer\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py”, line 153, in _standardize_input_data
    str(array.shape))
    ValueError: Error when checking input: expected dense_1_input to have shape (None, 20) but got array with shape (362, 1)

  175. Anam Zahra 2017年12月10日下午7:40 #

    Jason 先生!您做得很好,这是一个非常简单的指南。
    我正在尝试运行完全相同的代码,但有一个错误
    str(array.shape))

    ValueError: Error when checking target: expected dense_3 to have shape (None, 1) but got array with shape (768, 8)

    如何解决?

    我用的是 Windows 10 和 spyder。

    • Jason Brownlee 2017年12月11日上午5:24 #

      很遗憾听到这个消息,也许可以确认您安装了最新版本的 Numpy 和 Keras?

  176. nazek hassouneh 2017年12月11日上午7:33 #

    运行此代码后,我将计算准确率,如何操作,我
    我想将数据集划分为测试数据和训练数据
    并评估模型并计算准确率
    谢谢博士。

  177. Suchith 2017年12月21日下午2:35 #

    模型中有多少个隐藏层?

    • Jason Brownlee 2017年12月21日下午3:35 #

      有 2 个隐藏层,1 个输入层和 1 个输出层。

  178. Amare Mahtesenu 2017年12月22日上午9:55 #

    您好。这个博客非常棒,就像 Adrian 的 pyimagesearch 博客一样。我有一个问题,那就是您是否有或将有关于 Keras 框架与 SSD 或 Yolo 架构的教程?

    • Jason Brownlee 2017年12月22日下午4:16 #

      感谢您的建议,我希望将来会介绍它们。

  179. Kyujin Chae 2018年1月8日下午2:22 #

    感谢您提供的精彩文章。
    我真的很喜欢
    ‘Machine Learning Mastery’!!

  180. Luis Galdo 2018年1月9日上午8:41 #

    你好,Jason!

    这是一篇很棒的文章!
    我正在为大学的一门课程写一篇报告,并且在我的实现过程中使用了您的代码,是否可以在 bibtex 中引用这篇帖子?

    谢谢!

  181. Nikhil Gupta 2018年1月25日下午8:05 #

    我的问题是关于预测。我过去在预测数组中得到小数。突然,我开始只看到整数(0 或 1)。有什么想法可能导致了这种变化?

    predictions = model.predict(X2)

    predictions
    Out[3]
    array([[ 0.],
    [ 0.],
    [ 0.],
    ……,
    [ 0.],
    [ 0.],
    [ 0.]], dtype=float32)

    • Jason Brownlee 2018年1月26日上午5:39 #

      也许可以检查输出层的激活函数?

      • Nikhil Gupta 2018年1月28日上午3:30 #

        # 创建模型。使用 Dense 类定义全连接层
        model = Sequential()
        model.add(Dense(12, input_dim=len(x_columns), activation=’relu’)) #12个神经元,8个输入
        model.add(Dense(8, activation=’relu’)) #具有8个神经元的隐藏层
        model.add(Dense(1, activation=’sigmoid’)) #1个输出层。Sigmoid 给出 0/1

  182. joe 2018年1月27日凌晨1:25 #

    ================== RESTART: /Users/apple/Documents/deep1.py ==================
    使用 TensorFlow 后端。

    回溯(最近一次调用)
    File “/Users/apple/Documents/deep1.py”, line 20, in
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/models.py”, line 826, in compile
    **kwargs)
    File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/engine/training.py”, line 827, in compile
    sample_weight, mask)
    File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/engine/training.py”, line 426, in weighted
    score_array = fn(y_true, y_pred)
    File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/losses.py”, line 77, in binary_crossentropy
    return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)
    File “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py”, line 3069, in binary_crossentropy
    logits=output)
    TypeError: sigmoid_cross_entropy_with_logits() got an unexpected keyword argument ‘labels’
    >>>

    • Jason Brownlee 2018年1月27日上午5:58 #

      我没见过这个错误,抱歉。也许可以尝试发布到 stack overflow?

  183. Atefeh 2018年1月27日下午4:04 #

    Janson 先生您好
    安装好 Anaconda 和深度学习库后,我阅读了您的免费迷你课程,并尝试编写有关手写数字识别的代码。
    我在 jupyter notebook 中编写了代码,我这样做对吗?
    如果不对,我应该在哪里编写代码?
    如果我想使用另一个数据集(我自己的数据集),如何在代码中使用它?
    以及如何看到结果,例如准确率百分比?
    我为我的简单问题感到非常抱歉!我写了很多“Matlab”代码,但我确实是 Python 和 Anaconda 的初学者,我的老师强迫我为我的项目使用 Python 和 Keras。

    非常感谢您的帮助

    • Jason Brownlee 2018年1月28日上午8:22 #

      笔记本可以。

      您可以在 Python 脚本中编写代码,然后直接运行该脚本。

  184. Atefeh 2018年1月28日凌晨12:01 #

    Janson 先生您好,再次
    我从您的免费迷你课程中编写了以下代码用于手写数字识别,但在运行后遇到了语法错误

    from keras.datasets import mnist

    (X_train, y_train), (X_test, y_test) = mnist.load_data()

    X_train = X_train.reshape(X_train.shape[0], 1, 28, 28)
    X_test = X_test.reshape(X_test.shape[0], 1, 28, 28)

    from keras.utils import np_utils

    y_train = np_utils.to_categorical(y_train)
    y_test = np_utils.to_categorical(y_test)

    model = Sequential()
    model.add(Conv2D(32, (3, 3), padding=’valid’, input_shape=(1, 28, 28),
    activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dense(num_classes, activation='softmax'))
    model.compile(loss=’categorical_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

    File “”, line 2
    2 model.add(Conv2D(32, (3, 3), padding=’valid’, input_shape=(1, 28, 28),
    ^
    SyntaxError: invalid syntax

    您能帮帮我吗?!

    非常感谢

    • Jason Brownlee 2018年1月28日上午8:25 #

      这个

      应该是

  185. Lila 2018年1月29日上午8:04 #

    感谢您提供精彩的博客和解释。我只有一个问题:我们如何获取模型的预测值。非常感谢

    • Jason Brownlee 2018年1月29日上午8:21 #

      如下

      • Lila 2018年1月30日凌晨1:22 #

        感谢您的及时回复。我正在尝试学习 Keras 模型是如何工作的,并且我使用了。我像这样训练了模型

        model.compile(loss=’mean_squared_error’, optimizer=’sgd’, metrics=[‘MSE’])

        作为输出,我有以下几行

        Epoch 10000/10000

        10/200 [>………………………..] – ETA: 0s – loss: 0.2489 – mean_squared_error: 0.2489
        200/200 [==============================] – 0s 56us/step – loss: 0.2652 – mean_squared_error: 0.2652

        我的问题是,这两行(MSE 值)有什么区别?

        • Jason Brownlee 2018年1月30日上午9:53 #

          它们应该是相同的。一个可能是在每个批次结束时计算的,另一个是在每个 epoch 结束时计算的。

  186. Atefeh 2018年1月30日上午4:28 #

    你好

    再次运行后出现错误

    NameError Traceback (最近一次调用)
    in ()
    —-> 1 model = Sequential()
    2 model.add(Conv2D(32, (3, 3), padding=’valid’, input_shape=(1, 28, 28), activation=’relu’))
    3 model.add(MaxPooling2D(pool_size=(2, 2)))
    4 model.add(Flatten())
    5 model.add(Dense(128, activation=’relu’))

    NameError: name ‘Sequential’ is not defined

    • Jason Brownlee 2018年1月30日上午9:55 #

      您缺少导入。请确保您从结尾处的完整示例中复制了所有代码。

  187. Atefeh 2018年1月31日凌晨1:02 #

    from keras.datasets import mnist

    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    X_train = X_train.reshape(X_train.shape[0], 1, 28, 28)
    X_test = X_test.reshape(X_test.shape[0], 1, 28, 28)
    from keras.utils import np_utils

    y_train = np_utils.to_categorical(y_train)
    y_test = np_utils.to_categorical(y_test)

    model = Sequential()
    2 model.add(Conv2D(32, (3, 3), padding=’valid’, input_shape=(1, 28, 28), activation=’relu’))
    3 model.add(MaxPooling2D(pool_size=(2, 2)))
    4 model.add(Flatten())
    5 model.add(Dense(128, activation=’relu’))
    6 model.add(Dense(num_classes, activation=’softmax’))
    7 model.compile(loss=’categorical_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

  188. Atefeh 2018年2月2日上午5:01 #

    你好
    请告诉我如何确定 tensorflow 和 keras 已正确安装在我的系统中。
    也许是这样,因为我的 jupyter 中没有代码能运行。并且没有“import”能正常工作(例如 import pandas)
    谢谢你

  189. Dan 2018年2月3日凌晨12:29 #

    您好。我是一名机器学习新手,正在努力理解它。
    我有一个问题,我还没有完全解决。而且我不知道从哪里开始。
    我有一个字典,里面有几个键值对。键是一个从 0000 到 9999 的随机四位数。每个键的值如下设置:如果数字中的某个数字是 0、6 或 9,则其权重为 1,如果数字是 8,则其权重为 2,任何其他数字的权重为 0。然后将所有权重汇总,这就是键的值。(例如:{ ‘0000’: 4, ‘1234’: 0, ‘1692’: 2, ‘8800’: 6} – 以此类推)。

    现在我正在尝试构建一个模型来预测给定键的正确值。(即,如果我输入 2222,答案是 0,如果我输入 9011 – 答案是 2)。我首先做的是创建一个包含 5 列的 CSV 文件,前四列是字典中拆分(按单个数字)的键,第五列是每个键的值。然后我创建了一个数据集并定义了一个模型(就像这篇教程一样,但 input_dim=4)。现在当我训练模型时,准确率不会超过约 30%。您的模型也基于二进制输出,而我的模型应该有一个介于 0 到 8 之间的整数。接下来该怎么办?

    预先感谢您的所有努力!🙂

  190. Alex 2018年2月5日上午5:22 #

    有一件事我就是不明白。

    一行数据的示例是 6,148,72,35,0,33.6,0.627,50,1

    我猜最后一个数字是这个人是否有糖尿病(1)或没有(0),但我不明白的是我如何知道“预测”是关于那个 0 或 1 的,数据中有很多其他变量,我没有看到“糖尿病”是其中任何一个的标签。

    那么,我怎么知道或如何设置要预测的变量(数字)呢?

    • Jason Brownlee 2018年2月5日上午7:49 #

      您可以在您的应用程序或使用中解释预测。

      模型并不关心输入和输出是什么,它会尽力而为。它本身并不关心糖尿病。

  191. blaisexen 2018年2月6日上午9:14 #

    你好,
    @Jason Brownlee,Keras Python 大师。

    我正在开发一个面部识别测试,我成功使用了 Rprop,它对静态图像或面部图片效果很好,我也测试了 SVM 结果。

    您认为 Keras 比 Rprop 更好或更强大吗?

    因为我也考虑使用 Keras(1:1) 作为 Rprop(1:many) 的最终结果。

    或者您认为哪个系统更好?

    提前感谢您的建议。

    我还听说,商业面部识别器之一的领导者使用 PNN(使用 libopenblas),所以我真的很想知道为我的最终论文和应用程序选择哪一个。

    • Jason Brownlee 2018年2月6日上午9:29 #

      您说的 rprop 是什么意思?我认为它只是一个优化算法,而 Keras 是一个深度学习库。
      https://en.wikipedia.org/wiki/Rprop

      • blaisexen 2018年2月17日上午10:46 #

        好的,我想我明白了。

        我使用了 Accord.Net
        Rprop 测试效果很好
        MLR 测试效果很好
        SVM 测试效果很好
        RBM 测试效果很好

        我使用了分类来处理面部图像
        它们只适用于静态面部图片 100×100

        但如果我使用来自它们的另一张图片,
        这 4 个测试都失败了。

        您认为如果我在图像面部识别中使用 Keras 会得到好的结果或好的预测吗?

        因为如果 Keras 会有一个好的结果,那么我就必须使用 cesarsouza keras c#
        https://github.com/cesarsouza/keras-sharp

        感谢您的回复。

  192. CHIRANJEEVI 2018年2月8日晚上8:52 #

    模型拟合时得到的准确率与sklearn.metrics中的accuracy_score()有什么区别?它们具体是什么意思?

    • Jason Brownlee 2018年2月9日上午9:05 #

      准确率是对所有预测中正确预测数量的总结。

      它被用作模型在新的样本外数据上的技能估计。

  193. Shinan 2018年2月8日晚上9:09 #

    天气预报能用RNN做吗?

    • Jason Brownlee 2018年2月9日上午9:06 #

      不能。天气预报是通过在非常大的计算机上进行物理模拟的集合来完成的。

  194. CHIRANJEEVI 2018年2月9日下午3:56 #

    我们在拟合过程中没有预测任何东西(它只是一个训练,比如映射F(x)=Y)。
    但仍然得到了准确率,这是什么准确率?

    Epoch 1/150
    768/768 [==============================] – 1s 1ms/step – loss: 0.6771 – acc: 0.6510

    提前感谢你

    • Jason Brownlee 2018年2月10日上午8:50 #

      预测是作为反向传播误差的一部分进行的。

  195. lcy1031 2018年2月12日下午1:00 #

    嗨,Jason,

    非常感谢您提供的精彩教程。我有几个问题想请教您:
    1). 如何获得预测的分数?
    2). 如何将predict运行的结果输出到一个文件中,并且输出按垂直顺序排列?

    我看到您到处回答问题并帮助人们。您的时间和耐心非常宝贵!

    查尔斯

    • Jason Brownlee 2018年2月12日下午2:50 #

      您可以通过以下方式对模型进行预测

      yhat = model.predict(X)

      然后您可以将numpy数组结果保存到文件中。

  196. Callum 2018年2月21日上午10:11 #

    您好,我刚刚完成了这个教程,但唯一的问题是,我们在结果中实际找到的是什么?也就是说,准确率和损失是什么意思,我们实际上在找出什么?

    我刚接触神经网络,还不完全理解它们,如果您能回复,我将非常感激!

    非常感谢。

    Callum

    • Jason Brownlee 2018年2月22日上午11:12 #

      准确率是模型技能,即正确预测的数量除以总预测数量。

      损失是网络正在优化的函数,它应该是可微的并且与模型关注的度量相关,在本例中是用于分类的对数损失。

  197. Pedro Wenner 2018年2月23日凌晨1:27 #

    嗨,Jason,

    首先,祝贺您完成出色的工作,我终于掌握了机器学习(希望如此,哈哈)。
    因此,通过测试神经元数量和批次大小/时期数的更改,我达到了99.87%的准确率。

    我使用的参数是

    # 创建模型
    model = Sequential()
    model.add(Dense(240, input_dim=8, init=’uniform’, activation=’relu’))
    model.add(Dense(160, init=’uniform’, activation=’relu’))
    model.add(Dense(1, init=’uniform’, activation=’sigmoid’))
    # 编译模型
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    # 拟合模型
    model.fit(X, Y, epochs=1500, batch_size=100, verbose=2)

    当我运行它时,我总是得到99.87%的准确率,我认为这是一个好现象,对吗?请告诉我我是否做错了什么,或者这是一个假阳性。

    提前感谢,并为我的糟糕英语表示歉意😉

  198. Shiny 2018年3月2日凌晨12:56 #

    上面的例子非常好,先生。我想做一个在线购物电子产品价格变动预测项目。您能给我一些关于我项目的建议吗?您有没有使用神经网络进行价格预测的例子,请发链接给我,先生。

  199. awaludin 2018年3月6日凌晨12:38 #

    您好,这是一个非常有用的例子。但我仍然不明白为什么您加载
    X = dataset[:,0:8]
    Y = dataset[:,8]
    如果我这样做
    X = dataset[:,0:7] 它将无法工作

  200. Jeong Kim 2018年3月8日下午1:48 #

    感谢您的教程。
    也许有人已经告诉过您了。数据集不再可用。

  201. Wesley Campbell 2018年3月9日凌晨1:24 #

    非常感谢您提供的简洁示例!作为一个“感兴趣的业余爱好者”,我更有经验地对科学数据进行操作,而不是进行软件开发,这样简洁、高级的解释对我来说非常有帮助。我发现有时文档页面对我来说可能有点低级,即使我有多年的编程经验。这篇文章是我入门所需的一切,比其他“官方教程”更有帮助。

  202. Trung 2018年3月10日凌晨12:55 #

    感谢您的教程,但是数据集无法访问。请您修复一下。

  203. atefeh 2018年3月16日晚上10:11 #

    你好

    我找到了一个将我的图像数据转换为mnist格式的代码。但我遇到了一个错误,如下所示:
    您能帮帮我吗?

    import os
    from PIL import Image
    from array import *
    from random import shuffle

    # Load from and save to
    Names = [[‘./training-images’,’train’], [‘./test-images’,’test’]]

    for name in Names

    data_image = array(‘B’)
    data_label = array(‘B’)

    FileList = []
    for dirname in os.listdir(name[0])[1:]: # [1:] Excludes .DS_Store from Mac OS
    path = os.path.join(name[0],dirname)
    for filename in os.listdir(path)
    if filename.endswith(“.png”)
    FileList.append(os.path.join(name[0],dirname,filename))

    shuffle(FileList) # Usefull for further segmenting the validation set

    for filename in FileList

    label = int(filename.split(‘/’)[2])

    Im = Image.open(filename)

    pixel = Im.load()

    width, height = Im.size

    for x in range(0,width)
    for y in range(0,height)
    data_image.append(pixel[y,x])

    data_label.append(label) # labels start (one unsigned byte each)

    hexval = “{0:#0{1}x}”.format(len(FileList),6) # number of files in HEX

    # header for label array

    header = array(‘B’)
    header.extend([0,0,8,1,0,0])
    header.append(int(‘0x’+hexval[2:][:2],16))
    header.append(int(‘0x’+hexval[2:][2:],16))

    data_label = header + data_label

    # additional header for images array

    if max([width,height]) <= 256
    header.extend([0,0,0,width,0,0,0,height])
    else
    raise ValueError('Image exceeds maximum size: 256×256 pixels');

    header[3] = 3 # Changing MSB for image data (0x00000803)

    data_image = header + data_image

    output_file = open(name[1]+'-images-idx3-ubyte', 'wb')
    data_image.tofile(output_file)
    output_file.close()

    output_file = open(name[1]+'-labels-idx1-ubyte', 'wb')
    data_label.tofile(output_file)
    output_file.close()

    # gzip resulting files

    for name in Names
    os.system('gzip '+name[1]+'-images-idx3-ubyte')
    os.system('gzip '+name[1]+'-labels-idx1-ubyte')

    FileNotFoundError Traceback (最近一次调用)
    in ()
    13
    14 FileList = []
    —> 15 for dirname in os.listdir(name[0])[1:]: # [1:] Excludes .DS_Store from Mac OS
    16 path = os.path.join(name[0],dirname)
    17 for filename in os.listdir(path)

    FileNotFoundError: [WinError 3] The system cannot find the path specified: ‘./training-images’

    • Jason Brownlee 2018年3月17日上午8:37 #

      看起来代码找不到您的图像。或许可以更改代码中的路径?

  204. Sayan 2018年3月17日下午4:57 #

    非常感谢您,先生,这是一个非常好的直观教程。

  205. Nikhil Gupta 2018年3月19日晚上11:12 #

    我成功运行了一个用于欺诈检测的预测模型。我的数据集超过5000万条,并且还在增长。我遇到一个奇怪的问题。
    当加载的数据量为1000万或更少时,我的预测是正常的。
    一旦我加载了1100万条数据,我的预测就会饱和到一个特定值(比如0.48),并一直重复。也就是说,无论输入如何,所有预测都将是0.48。

    我已经尝试了多种密集模型的组合。
    # 创建模型
    model = Sequential()
    model.add(Dense(32, input_dim=4, activation=’tanh’))
    model.add(Dense(28, activation=’tanh’))
    model.add(Dense(24, activation=’tanh’))
    model.add(Dense(20, activation=’tanh’))
    model.add(Dense(16, activation=’tanh’))
    model.add(Dense(12, activation=’tanh’))
    model.add(Dense(8, activation=’tanh’))
    model.add(Dense(1, activation=’sigmoid’))

    • Jason Brownlee 2018年3月20日上午6:21 #

      也许应该检查一下是否需要对所有数据进行训练,通常一小部分样本就足够了。

      • Nikhil Gupta 2018年3月22日凌晨2:45 #

        哦。我相信机器学习的准确性会随着时间的推移和更多数据的获取而提高。

  206. Chandra Sutrisno Tjhong 2018年3月28日下午4:43 #

    嗨,

    如何定义隐藏层的数量和每层的神经元数量?

    • Jason Brownlee 2018年3月29日上午6:30 #

      没有很好的启发式方法,试错法是一个好方法。找出最适合您特定数据的方法。

  207. Aravind 2018年3月30日凌晨12:12 #

    我执行了代码并得到了输出,但是如何在应用程序中使用这个预测?

  208. Sabarish 2018年3月30日凌晨12:16 #

    值1.0和0..0代表什么意思??

  209. Anand 2018年4月1日下午3:51 #

    如果输入有8个,为什么您在输入层使用了12个神经元?另外,为什么在输入层使用激活函数?

    • Jason Brownlee 2018年4月2日上午5:19 #

      第一个隐藏层的神经元数量可以与输入层的神经元数量(例如输入特征的数量)不同。它们之间只有松散的关系。

  210. Lia 2018年4月1日晚上11:49 #

    你好先生,
    神经网络是否使用标准化后的自变量值,还是我们在拟合和预测阶段应该输入标准化后的值?谢谢。

    • Jason Brownlee 2018年4月2日上午5:23 #

      尝试两者,看看哪种最适合您的特定预测建模问题。

      • Mark Littlewood 2021年10月27日上午9:18 #

        您好,我正在尝试使用一个包含2个输入的***数据集,当第一个层设置为Dense(4时,它只输出了NaN损失。但是当我将其减少到3时,我得到了有意义的损失输出。这是否与最大Dens值与输入的关系有关?

        • Adrian Tam
          Adrian Tam 2021年10月27日中午12:56 #

          应该没有。这更可能与层的初始化方式有关,而不是与Dense层中的神经元数量有关。

  211. tareknahool 2018年4月4日上午5:17 #

    您一直都很棒,这是一堂很棒的课。但说实话,我不知道它的意思
    “\n%s: %.2f%%” % 以及为什么您在代码中使用数字(1)(model.metrics_names[1], scores[1]*100)?

  212. Abhilash Menon 2018年4月5日上午6:27 #

    Brownlee 博士,

    当我们进行预测时,是否可以将测试数据集的每一行预测值放在同一行的旁边?我曾考虑过打印预测结果然后将其复制到Excel中,但我不确定Keras是否会保留顺序。您能帮我解决这个问题吗?非常感谢您的帮助!

    • Jason Brownlee 2018年4月5日下午3:05 #

      是的,预测的顺序与输入值的顺序一致。

      这有帮助吗?

  213. Andrea Grandi 2018年4月9日上午6:37 #

    深度学习是不是一种“黑魔法”?🙂

    我之前曾为同一个数据集使用scikit-learn和机器学习,并尝试应用我在这里和书本上学到的所有技术,以获得76%的准确率。

    我尝试了这个Keras教程,使用TensorFlow作为后端,并且第一次尝试就获得了80%的准确率 O_o

    • Jason Brownlee 2018年4月10日上午6:08 #

      不,不是魔法,只是不同。

      不过做得很好!

  214. Manny Corrao 2018年4月11日上午8:30 #

    您能告诉我们列名吗?我认为这很重要,因为它帮助我们理解网络在评估和学习什么。

    谢谢,

    Manny

  215. rachit 2018年4月11日晚上7:13 #

    在执行 versions.py 时

    我遇到了这个错误

    回溯(最近一次调用)
    File “versions.py”, line 2, in
    import scipy
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\scipy\__init__.py”, line 61, in
    from numpy import show_config as show_numpy_config
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\__init__.py”, line 142, in
    from . import add_newdocs
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\add_newdocs.py”, line 13, in
    from numpy.lib import add_newdoc
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\lib\__init__.py”, line 8, in
    from .type_check import *
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\lib\type_check.py”, line 11, in
    import numpy.core.numeric as _nx
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\core\__init__.py”, line 74, in
    from numpy.testing import _numpy_tester
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\testing\__init__.py”, line 12, in
    from . import decorators as dec
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\testing\decorators.py”, line 6, in
    from .nose_tools.decorators import *
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\testing\nose_tools\decorators.py”, line 20, in
    from .utils import SkipTest, assert_warns
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\numpy\testing\nose_tools\utils.py”, line 15, in
    from tempfile import mkdtemp, mkstemp
    File “C:\Users\ATIT GARG\Anaconda3\lib\tempfile.py”, line 45, in
    from random import Random as _Random
    File “C:\Users\ATIT GARG\random.py”, line 7, in
    来自 keras.models import Sequential
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\keras\__init__.py”, line 3, in
    from . import utils
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\keras\utils\__init__.py”, line 4, in
    from . import data_utils
    File “C:\Users\ATIT GARG\Anaconda3\lib\site-packages\keras\utils\data_utils.py”, line 23, in
    from six.moves.urllib.error import HTTPError
    ImportError: cannot import name ‘HTTPError’

  216. Gray 2018年4月14日上午4:25 #

    Jason – 非常令人印象深刻的工作!更令人印象深刻的是您对所有问题的详细回答。我全部看了一遍,学到了很多有用的信息。做得好!

  217. octdes 2018年4月14日下午2:39 #

    你好 Jason,
    感谢您的好教程!
    您会如何命名/描述这个神经网络的结构?
    问题在于,我觉得您可以拥有不同数量的输入和输入层中的神经元,这很奇怪。我见过的大多数神经网络图,每个输入都直接连接到一个输入层神经元。我从未见过输入数量与输入层神经元数量不同的神经网络图。
    您有没有反例,或者是我有什么误解?
    感谢您的工作和知识分享🙂

    • Jason Brownlee 2018年4月15日上午6:24 #

      本文中的神经网络类型是多层感知机(MLP)。

      代码中的第一个“层”实际上同时定义了输入层和第一个隐藏层。

      输入的数量必须与输入数据的列数匹配。第一个隐藏层中的神经元数量可以是您想要的任何数字。

      这有帮助吗?

  218. Ashley 2018年4月16日上午7:29 #

    Jason,非常感谢您的教程!这是我在互联网上找到的最好的教程。作为一个政治学***,我正在研究像这样复杂的***,我正在寻找允许更复杂关系的***。您的代码和帖子非常清晰;我能够比我预期的更容易地将其改编到我的目的。您这项***可能的一个延伸,也许是这个教程,是将层和节点映射到数据生成***的***。

    • Jason Brownlee 2018年4月16日下午2:54 #

      谢谢Ashley,我很高兴它有帮助。

      感谢您的建议。

  219. Eric Miles 2018年4月20日凌晨1:22 #

    我刚开始学习您的网站——感谢您提供的精彩资源!我想指出一个我认为是笔误的地方:在“定义模型”节之前的代码块中,我认为我们只需要 X = dataset[:,0:7],这样我们就不会将输出变量包含在输入中。

  220. Rafa 2018年4月28日凌晨12:50 #

    很棒的教程,我终于找到了一个很好的深度学习网站(Y)。

  221. Vivek 2018年5月7日晚上8:31 #

    很棒的教程,谢谢。我有一个项目,我需要在其中进行CAD图像(主要是3D机械图像分类)。您能给我一个如何进行的路线图吗?
    我是新手,我不知道任何东西。

  222. Rahmad ars 2018年5月8日凌晨1:36 #

    感谢您提供教程,先生。
    实际上我还有一些问题。
    1. 这是反向传播神经网络吗?
    2. 如何初始化Nguyen-Widrow随机权重?
    3. 我有自己的数据集,每个数据集包含一个1x64的矩阵,哪个是正确的?我应该对它的每一列进行归一化,还是每一行进行归一化?

    谢谢。
    我是那个在“从零开始的反向传播”页面问您的人。

    • Jason Brownlee 2018年5月8日上午6:16 #

      是的,它使用反向传播来更新权重。

      抱歉,我不知道那种初始化方法,您可以在这里查看支持的方法。
      https://keras.org.cn/initializers/

      尝试一系列数据准备方案,看看哪种最适合您的特定数据集和选定的模型。

  223. Hussein 2018年5月9日晚上10:33 #

    嗨,Jason,

    这是一个很好的入门介绍,尽管这项技术令人望而生畏但又引人入胜!我想玩弄您的代码,看看我是否能提出一些简单的数据集并看看预测结果如何——一个我想到的想法是,我能否***一个预测电话号码属于哪个***的模型?因此,训练***看起来像一个2列的CSV,电话号码和***……这基本上是一个***。您认为这有效吗?还可以添加哪些***?我仍然会尝试一下,但很想听听您的任何想法/建议!

    谢谢!

    • Jason Brownlee 2018年5月10日上午6:33 #

      国家代码会让问题过于简单——例如,可以用查找表来解决。

      • Hussein 2018年5月10日下午4:24 #

        是的,我只是想看看机器学习是否可以用于“找出”查找表,而不是由用户提供,只要有足够的数据……这不是一个实际的用例,而是一个学习练习。事实证明,我大约有700个电话号码的数据集对此并不有效。但再说一次,这是因为问题特征太少,例如,在我这里只有一类?如果我增加特征数量,比如电话号码、国家代码、电话号码所属的城市,甚至可能是电话号码注册的手机公司,您认为这会使训练更有效吗?

  224. Frank Lu 2018年5月14日下午7:44 #

    很棒的教程,非常有帮助,然后我有一个问题。在 8 个输入中,哪个占的比例最大?我们在数据集中有 8 个因素,如怀孕次数、血糖、血压和其他因素。那么,哪个因素与糖尿病最相关?我们如何通过 MLP 知道这个比例?
    谢谢!

  225. Paolo 2018年5月16日下午7:59 #

    嗨,Jason,
    谢谢您的教程。

    我有一个问题,您在 pandas 中也使用了 keras 吗?在这种情况下,用 numpy 导入数据是否更好?您有什么建议?

    再次感谢您,
    Paolo

    • Jason Brownlee 2018年5月17日上午6:31 #

      是的,是的。

      • Stefan 2018年11月10日上午1:06 #

        怎么会这样?我通常看到 pandas.readcsv() 来读取文件。keras 只接受 numpy 数组吗?

  226. zohreh 2018年5月20日上午9:14 #

    感谢您出色的教程。我有一个信用卡数据集,我想对其进行欺诈检测。它有 312 列,所以在进行 DNN 之前,我应该先进行降维,然后使用 DNN 吗?另一个问题是,我的数据集是否也可以使用 CNN?

    谢谢你

    • Jason Brownlee 2018年5月21日上午6:24 #

      是的,选择最能映射到输出变量的特征。

      如果数据具有空间关系,例如在空间或时间上的交易序列,则可以使用 CNN。

      • zohreh 2018年5月23日上午6:44 #

        感谢您的回答,所以我觉得 CNN 对我的数据集没有意义,
        您有主动学习的教程吗?
        感谢您的时间。

        • Jason Brownlee 2018年5月23日下午2:37 #

          我不知道是否合适,我当时是想提供足够的信息供您自己判断。

          我希望将来能涵盖主动学习。

          • zohreh 2018年5月24日上午3:13 #

            是的,我明白了,我根据您提供的信息说的,非常感谢您的回答和出色的教程。

  227. Miguel García 2018年5月24日上午11:55 #

    您能分享一个关于多标签支持的第一个神经网络教程吗?

  228. Sathish 2018年5月24日下午12:57 #

    如何在 keras 中创建卷积层并可视化特征

  229. Anam 2018年5月28日上午3:52 #

    亲爱的 Jason,
    我收到一个错误“ValueError: could not convert string to float: “请帮忙解决这个问题。我正在使用自己的数据集,其中包含文本而不是数字(如您使用的数据集)。
    谢谢!

  230. Anam 2018年5月29日上午7:26 #

    亲爱的 Jason,
    我正在运行您教程第 6 部分的代码示例。但在以下代码片段中出现了一个错误

    代码片段
    dataset = numpy.loadtxt(“pima_indians.csv”, delimiter=”,”)
    # 分割为输入 (X) 和输出 (Y) 变量
    X = dataset[:,0:8]
    Y = dataset[:,8]

    错误
    ValueError: could not convert string to float: “6

    请指导我解决这个问题。感谢您的宝贵时间。

  231. moti 2018年6月4日上午3:34 #

    你好医生,在这段 Python 代码中,我应该在哪里获取“keras”包?

  232. Ammara Habib 2018年6月5日上午5:13 #

    嗨 Jason,感谢您发布的精彩博文。我有一个问题,我们能否将密集层用作文本分类的输入(例如:电影评论的情感分类)。如果可以,我们如何将文本数据集转换为密集层的数值?

    • Jason Brownlee 2018年6月5日上午6:47 #

      可以,尽管通常的做法是对文本进行独热编码或使用嵌入层。

      我在博客上都有示例。

  233. Ammara Habib 2018年6月5日上午9:18 #

    感谢您的宝贵时间。先生,您的意思是,我首先使用嵌入层作为输入层,然后使用密集层作为隐藏层吗?

  234. Lisa Xie 2018年6月15日下午1:12 #

    你好,谢谢你的教程。我想知道你如何为每一层设置神经元数量和激活函数,例如第一层 12 个神经元,第二层 8 个。

  235. Marwa 2018年6月18日上午1:25 #

    你好 jason,

    我开发了两个使用 keras 的神经网络,但我收到了这个错误

    line 1336, in _do_call
    raise type(e)(node_def, op, message)

    ResourceExhaustedError: OOM when allocating tensor with shape[7082368,50]
    [[Node: training_1/Adam/Variable_14/Assign = Assign[T=DT_FLOAT, _class=[“loc:@training_1/Adam/Variable_14″], use_locking=true, validate_shape=true, _device=”/job:localhost/replica:0/task:0/device:GPU:0”](training_1/Adam/Variable_14, training_1/Adam/zeros_14)]]

    您有什么想法吗?
    谢谢。

    • Jason Brownlee 2018年6月18日上午6:42 #

      抱歉,我以前没见过这个错误。也许可以试试在 stackoverflow 上发布/搜索?

  236. prateek bhadauria 2018年6月23日晚上11:38 #

    先生,我有一个与回归相关的数据集,其中包含 49999 行和 20 列的数组,我想在此数据集上实现 CNN。

    我按照我的理解把代码放上去了,请给我一些建议,如何纠正它,我主要在放置我的密集维度时遇到了麻烦

    来自 keras.models import Sequential
    from keras.layers import Dense
    import numpy as np
    import tensorflow as tf
    from matplotlib import pyplot
    from sklearn.datasets import make_regression
    from sklearn.preprocessing import MinMaxScaler
    from sklearn.metrics import mean_squared_error
    from keras.wrappers.scikit_learn import KerasRegressor
    from sklearn.preprocessing import StandardScaler
    from keras.layers import Dense, Dropout, Flatten
    from keras.layers import Conv2D, MaxPooling2D
    from keras.optimizers import SGD

    seed = 7
    np.random.seed(seed)
    from scipy.io import loadmat
    dataset = loadmat(‘matlab2.mat’)
    Bx=basantix[:, 50001:99999]
    Bx=np.transpose(Bx)
    Fx=fx[:, 50001:99999]
    Fx=np.transpose(Fx)

    from sklearn.cross_validation import train_test_split
    Bx_train, Bx_test, Fx_train, Fx_test = train_test_split(Bx, Fx, test_size=0.2, random_state=0)

    scaler = StandardScaler() # Class is create as Scaler
    scaler.fit(Bx_train) # Then object is created or to fit the data into it
    Bx_train = scaler.transform(Bx_train)
    Bx_test = scaler.transform(Bx_test)

    model = Sequential()
    def base_model()

    keras.layers.Dense(Dense(49999, input_shape=(20,), activation=’relu’))
    model.add(Dense(20))
    model.add(Dense(49998, init=’normal’, activation=’relu’))
    model.add(Dense(49998, init=’normal’))
    model.compile(loss=’mean_squared_error’, optimizer = ‘adam’)
    return model

    scale = StandardScaler()
    Bx = scale.fit_transform(Bx)
    Bx = scale.fit_transform(Bx)

    clf = KerasRegressor(build_fn=base_model, nb_epoch=100, batch_size=5,verbose=0)

    clf.fit(Bx,Fx)
    res = clf.predict(Bx)

    ## line below throws an error
    clf.score(Fx,res)

    • Jason Brownlee 2018年6月24日上午7:33 #

      抱歉,我无法为您调试代码。也许可以将您的代码和错误发布到 stackoverflow?

  237. Madhav Prakash 2018年6月24日上午3:01 #

    嗨,Jason,
    看了数据集,我发现有很多属性,每个属性的单位都不同。为什么您没有重新缩放/标准化数据?但仍然设法获得了 75% 的准确率?

  238. Aarron Wilson 2018年7月8日上午8:19 #

    首先,感谢您的教程。我也承认这个网络更多是用于教育目的。但是,通过标准的归一化处理,这个网络的准确率可以提高到 83-84%。通过使用更深层的模型,也可以达到 93-95% 的准确率。

    #标准归一化
    X= StandardScaler().fit_transform(X)

    #以及一个更深层的模型
    model = Sequential()
    model.add(Dense(12, input_dim=8, activation=’relu’))
    model.add(Dense(12, activation=’relu’))
    model.add(Dense(12, activation=’relu’))
    model.add(Dense(12, activation=’relu’))
    model.add(Dense(12, activation=’relu’))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(1, activation=’sigmoid’))

    • Jason Brownlee 2018年7月9日上午6:30 #

      谢谢,是的,在使用神经网络时,归一化通常是一个好主意。

  239. Alex 2018年7月10日上午3:47 #

    你好,感谢这篇精彩的文章

    想象一下,在我的数据集中,糖尿病不是 0 或 1,而是有 3 个结果,我的意思是,数据行如下所示

    data1, data2, sickness
    123, 124, 0
    142, 541, 0
    156, 418, 1
    142, 541, 1
    156, 418, 2

    所以,我需要对 3 个值进行分类。如果我使用您给我们的这个示例,我该如何确定输出?

    • Jason Brownlee 2018年7月10日上午6:51 #

      输出将是 Alex 的病情。也许我不理解你的问题?

      • Alex 2018年7月10日上午7:11 #

        是的,输出将是病情。

  240. Alex 2018年7月10日上午10:17 #

    抱歉我的英语,它不是我的母语,我将重新问我的问题。我的意思是,我将有一个标签有超过 2 个结果,0 是一种疾病,1 是另一种,2 是另一种。

    我该如何使用您向我们展示的模型来拟合这 3 个结果?

  241. adsad 2018年7月11日上午1:06 #

    是否可以预测彩票结果。如果可以,如何预测?

  242. Tom 2018年7月14日上午2:32 #

    你好 Jason,我在本教程中运行了第一个示例代码。但让我困惑的是

    为什么最终的训练准确率 (0.7656) 与同一数据集(训练集)的评估分数(78.26%)不同?我弄不明白。您能告诉我吗?非常感谢!

    第 150 周期/150
    768/768 [==============================] – 0s – loss: 0.4827 – acc: 0.7656
    32/768 [>………………………..] – ETA: 0s
    acc: 78.26%

  243. Tom 2018年7月14日晚上9:09 #

    感谢您的快速回复。但我注意到在您的代码中,训练集和验证集是完全相同的数据集。请检查以确认。代码在“6. Tie It All Together”部分。

    # 拟合模型
    model.fit(X, Y, epochs=150, batch_size=10)
    # 评估模型
    scores = model.evaluate(X, Y)

    所以,我的问题仍然是:为什么最终的训练准确率(0.7656)与同一数据集的评估分数(78.26%)不同?
    谢谢!

    • Jason Brownlee 2018年7月15日上午6:14 #

      也许详细输出可能是针对每个批次累积的,而不是在训练周期结束时总结技能。

  244. ami 2018年7月16日上午2:01 #

    你好 Jason,
    您是否有关于使用 CNN 进行信号处理的教程?我有一些生物医学信号(如 ECG)的 csv 文件,并且我想使用深度学习对正常和异常信号进行分类。

    此致

    • Jason Brownlee 2018年7月16日上午6:11 #

      是的,我计划在此主题上发布一套教程。它们应该很快就会出来。

  245. EL 2018年7月16日下午7:19 #

    你好,非常感谢你的教程。我正在尝试制作一个神经网络,它将接收一个数据集并返回它是否适合我的另一个程序进行分析。是否可以将可接受的数据集和不可接受的数据集馈送给它,然后调用新数据集并返回该数据集是否可接受?感谢您的帮助,我是一名机器学习新手。

  246. ami 2018年7月18日下午2:37 #

    真的吗!非常感谢。您可以在我发布教程时通知我吗?因为我正在做一个项目,我现在卡住了。

    此致

  247. Diagrams 2018年7月30日下午2:45 #

    如果您能提供网络图,显示单个节点和图边(以及偏置节点和激活函数),并在图上指示哪些部分是由哪些 model.add 命令/参数生成的,这将对新手非常有帮助。类似于 https://zhu45.org/posts/2017/May/25/draw-a-neural-network-through-graphviz/

    我尝试使用 from keras.utils.plot_model 和 tensorboard 进行可视化,但两者都没有生成节点级别的图。

  248. Aravind 2018年7月30日晚上7:57 #

    谁能告诉我一个在 GPU 上运行我的 ann keras tensorflow 后端 的简单方法。谢谢

  249. farli 2018年8月6日下午1:08 #

    您在这里使用了反向传播吗?

    • Jason Brownlee 2018年8月6日下午2:54 #

      是的。

      • farli 2018年8月13日上午9:40 #

        您能否制作一个关于卷积神经网络的教程?那将非常有帮助……:)

        • Jason Brownlee 2018年8月13日下午2:27 #

          是的,我已经在博客上有很多了。尝试搜索博客。

  250. Karim Gamal 2018年8月7日晚上8:52 #

    我有一个问题,我的结果如下所示

    Epoch 146/150 – 0s – loss: -1.2037e+03 – acc: 0.0000e +00
    Epoch 147/150 – 0s – loss: -1.2037e+03 – acc: 0.0000e +00
    Epoch 148/150 – 0s – loss: -1.2037e+03 – acc: 0.0000e +00
    Epoch 149/150 – 0s – loss: -1.2037e+03 – acc: 0.0000e +00
    Epoch 150/150 – 0s – loss: -1.2037e+03 – acc: 0.0000e +00

    而我的数据集中输出的值在 0 到 500 之间,而不是只有 0 和 1。
    那么如何在我的代码中修复这个问题?

  251. Tim 2018年8月15日上午5:54 #

    太棒了!!!非常感谢。

  252. tania 2018年8月27日晚上8:35 #

    嗨,Jason,

    感谢您的教程。我刚接触机器学习,目前正在处理一个非二元分类问题。

    我的数据集包含一些带标签的样本——所有样本都测量相同的数量/单位。通常,典型的训练集有 10 到 20 个带标签的样本/输入。然而,前馈或测试样本将只包含 7 个输入(随机的)。

    我正在努力寻找一个解决方案来设计一个系统,该系统接受的输入少于训练集中典型的输入。

  253. Vaibhav Jaiswal 2018年9月10日下午6:28 #

    这里有一个很棒的教程!但模型的关键方面是预测样本。如果我打印第一个预测值,它会为分类特征的所有列显示一些值。如何从样本中获取预测数字?

  254. Glen 2018年9月19日晚上10:45 #

    我认为我一定做错了什么,我一直收到错误
    File “C:\Users\glens\Anaconda3\lib\site-packages\tensorflow\python\framework\errors_impl.py”, line 519, in __exit__
    c_api.TF_GetCode(self.status.status))

    InvalidArgumentError: Input to reshape is a tensor with 10 values, but the requested shape has 1
    [[Node: training_19/Adam/gradients/loss_21/dense_64_loss/Mean_1_grad/Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _class=[“loc:@training_19/Adam/gradients/loss_21/dense_64_loss/Mean_1_grad/truediv”], _device=”/job:localhost/replica:0/task:0/device:GPU:0″](training_19/Adam/gradients/loss_21/dense_64_loss/mul_grad/Sum, training_19/Adam/gradients/loss_21/dense_64_loss/Mean_1_grad/DynamicStitch/_1703)]]

    您能否阐明为什么我会收到此错误?

    谢谢您

  255. Snehasish 2018年9月19日 晚上11:15 #

    Jason,感谢您这个很棒的教程。我有一个疑问——为什么评估没有产生100%的准确率?毕竟,我们使用了与训练数据相同的评估数据集。

  256. Mark C 2018年9月27日 上午12:49 #

    我该如何预测我想预测的东西,比如新数据?例如,我做了一个垃圾邮件检测,但不知道如何预测我写的句子是否是垃圾邮件。

  257. Vivek 2018年10月1日 上午3:17 #

    你好先生,

    我是新手,理解了您代码的一部分。我对预测模型有疑问,基本上我们将数据分成训练集和测试集。在上面的例子中,整个数据集都被用作训练数据集。我们如何训练模型在训练集上,并使用它来进行测试集的预测?

  258. Vivek35 2018年10月1日 上午7:11 #

    你好先生,
    这是一个很棒的教程,帮助我理解。但是,我是新手,想弄明白一些事情。在上面的代码中,我们将整个数据集视为训练集。我们能把它分成训练集和测试集,将模型应用于训练集,并使用它进行测试集预测吗?如何在上面的代码中实现?

  259. Lipi 2018年10月5日 上午6:26 #

    嗨,Jason,

    我正在尝试使用我的神经网络进行预测。我在训练数据时使用了特征中的`MinMaxScaler`。如果我在预测数据集上不使用与训练数据特征相同的转换函数,我就无法得到好的预测。您能在这方面给我一些建议吗?

    • Jason Brownlee 2018年10月5日 下午2:29 #

      您必须使用相同的转换函数来准备训练数据和对新数据进行预测。

      • Lipi 2018年10月5日 晚上10:12 #

        谢谢!

  260. neenu 2018年10月6日 下午3:57 #

    你好,我是新手,我在spyder中写了以下代码
    来自 keras.models import Sequential
    from keras.layers import Dense
    import numpy
    # 设置随机种子以保证结果可复现
    numpy.random.seed(7)
    # 加载皮马印第安人糖尿病数据集
    dataset = numpy.loadtxt(“pima-indians-diabetes.txt”,encoding=”UTF8″, delimiter=”,”)
    # 分割为输入 (X) 和输出 (Y) 变量
    X = dataset[:,0:8]
    Y = dataset[:,8]

    # 创建模型
    model = Sequential()
    model.add(Dense(12, input_dim=8, activation=’relu’))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(1, activation=’sigmoid’))
    # 编译模型
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    # 拟合模型
    model.fit(X, Y, epochs=150, batch_size=10)
    # 评估模型
    scores = model.evaluate(X, Y)
    print(“\n%s: %.2f%%” % (model.metrics_names[1], scores[1]*100))

    我得到了以下输出

    runfile(‘C:/Users/DELL/Anaconda3/Scripts/temp.py’, wdir=’C:/Users/DELL/Anaconda3/Scripts’)
    使用 TensorFlow 后端。
    回溯(最近一次调用)

    File “”, line 1, in
    runfile(‘C:/Users/DELL/Anaconda3/Scripts/temp.py’, wdir=’C:/Users/DELL/Anaconda3/Scripts’)

    File “C:\Users\DELL\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py”, line 668, in runfile
    execfile(filename, namespace)

    File “C:\Users\DELL\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py”, line 108, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

    File “C:/Users/DELL/Anaconda3/Scripts/temp.py”, line 1, in
    来自 keras.models import Sequential

    File “C:\Users\DELL\Anaconda3\lib\site-packages\keras\__init__.py”, line 3, in
    from . import utils

    File “C:\Users\DELL\Anaconda3\lib\site-packages\keras\utils\__init__.py”, line 6, in
    from . import conv_utils

    File “C:\Users\DELL\Anaconda3\lib\site-packages\keras\utils\conv_utils.py”, line 9, in
    from .. import backend as K

    File “C:\Users\DELL\Anaconda3\lib\site-packages\keras\backend\__init__.py”, line 89, in
    from .tensorflow_backend import *

    File “C:\Users\DELL\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py”, line 5, in
    import tensorflow as tf

    File “C:\Users\DELL\Anaconda3\lib\site-packages\tensorflow\__init__.py”, line 22, in
    from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import

    File “C:\Users\DELL\Anaconda3\lib\site-packages\tensorflow\python\__init__.py”, line 49, in
    from tensorflow.python import pywrap_tensorflow

    File “C:\Users\DELL\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py”, line 74, in
    raise ImportError(msg)

    ImportError: 回溯(最近一次调用)
    File “C:\Users\DELL\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py”, line 14, in swig_import_helper
    return importlib.import_module(mname)
    File “C:\Users\DELL\Anaconda3\lib\importlib\__init__.py”, line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    文件 "", 第 994 行, 在 _gcd_import 中
    文件 "", 第 971 行, 在 _find_and_load 中
    文件 "", 第 955 行, 在 _find_and_load_unlocked 中
    文件 "", 第 658 行, 在 _load_unlocked 中
    文件 "", 第 571 行, 在 module_from_spec 中
    文件 "", 第 922 行, 在 create_module 中
    文件 "", 第 219 行, 在 _call_with_frames_removed 中
    ImportError: DLL load failed with error code -1073741795

    处理上述异常时,发生了另一个异常

    回溯(最近一次调用)
    File “C:\Users\DELL\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py”, line 58, in
    from tensorflow.python.pywrap_tensorflow_internal import *
    File “C:\Users\DELL\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py”, line 17, in
    _pywrap_tensorflow_internal = swig_import_helper()
    File “C:\Users\DELL\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py”, line 16, in swig_import_helper
    return importlib.import_module('_pywrap_tensorflow_internal')
    File “C:\Users\DELL\Anaconda3\lib\importlib\__init__.py”, line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    ModuleNotFoundError: 没有名为 '_pywrap_tensorflow_internal' 的模块

    未能加载原生 TensorFlow 运行时。

    请参阅 https://tensorflowcn.cn/install/install_sources#common_installation_problems

    了解一些常见原因和解决方案。寻求帮助时请包含整个堆栈跟踪
    此错误消息上方。

  261. kamal 2018年10月15日 上午1:08 #

    先生,请提供自适应神经模糊分类器的Python代码

    • Jason Brownlee 2018年10月15日 上午7:31 #

      感谢您的建议。

      • Rajan Kumar 2021年6月29日 下午3:44 #

        我也在等它。

  262. Shahbaz 2018年10月24日 上午4:44 #

    祝您一切顺利,先生。
    您能给我一些关于OCR系统的想法吗?作为我的毕业设计项目,请给我一个OCR的后端策略,您有OCR代码吗?

  263. Andrew Agib 2018年10月29日 晚上10:39 #

    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

    那句话出现了一个语法错误,可能是什么原因?

  264. VASUDEV K P 2018年11月3日 晚上10:13 #

    你好 Jason,

    我安装了theano后端。我使用的是Windows操作系统,在执行过程中我遇到了一个错误:“No module named TensorFlow”。请帮忙。

  265. Imen Drs 2018年11月4日 上午7:09 #

    嗨,Jason,
    请问,如何计算此示例的精确率和召回率?
    谢谢。

  266. Stefan 2018年11月10日 上午2:59 #

    我一直认为sigmoid和softmax是相当相似的激活函数。但当我尝试在最后一个层使用softmax作为激活函数而不是sigmoid时,我的准确率差了很多。

    您觉得这合理吗?如果合理,为什么?我觉得在其他代码中我更常看到softmax而不是sigmoid。

    • Jason Brownlee 2018年11月10日 上午6:09 #

      不。

      Sigmoid用于2个类别。
      Softmax用于>2个类别

  267. Amuda Kamorudeen 2018年11月10日 下午4:46 #

    我正在开发一个模型,用于预测客户流失的可能性。我的数据集有70000行和500列,请问我如何将数值数据作为输入传递给卷积神经网络(CNN)?

    • Jason Brownlee 2018年11月11日 上午5:59 #

      CNN仅适用于具有空间关系的数据,例如图像、时间序列和文本。

  268. irfan 2018年11月18日 下午3:22 #

    嗨,杰森,

    我正在使用TensorFlow作为后端。
    来自 keras.models import Sequential
    from keras.layers import Dense
    import sys
    from keras import layers
    from keras.utils import plot_model

    print (model.layer())

    错误。

    —————————————————————————
    AttributeError Traceback (最近一次调用)
    in
    9 model.add(Dense(512, activation=’relu’))
    10 model.add(Dense(10, activation=’sigmoid’))
    —> 11 print (model.layer())
    12 # Compile model
    13 model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

    AttributeError: ‘Sequential’ object has no attribute ‘layer’

  269. Mario 2018年12月2日 上午5:30 #

    嗨 Jason
    首先,感谢您提供如此精彩的教程。由于您的脚本使用的是值列表,而我的输入是24x20的矩阵列表,这些矩阵根据测量顺序填充了3个参数在3000个周期中的值,我该如何输入这种矩阵数据,或者说,我该如何输入我从原始数据集中提取的3个参数的图像流?我应该如何修改这个脚本以便我可以使用我的数据集?

    • Jason Brownlee 2018年12月2日 上午6:26 #

      当使用MLP处理图像时,您必须将每个像素数据矩阵展平成一个单一的行向量。

  270. Evangelos Argyropoulos 2018年12月18日 上午6:15 #

    嗨,Jason,
    感谢教程。1个问题。
    我将此算法用于时间序列预测,0=买,1=卖。这个模型是否会过拟合?

    • Jason Brownlee 2018年12月18日 上午6:27 #

      只有在您尝试拟合并评估训练集和验证集上的学习曲线时,您才能知道。

  271. SOURAV MONDAL 2018年12月28日 上午7:42 #

    先生,教程很棒。
    有没有办法可视化keras中创建的模型(即神经网络的基本结构,带有节点层和它们之间的连接)的不同层?

  272. Imen Drs 2018年12月28日 晚上11:29 #

    感谢这篇教程。

    在我尝试编译和拟合模型时遇到了一个问题。它返回了ValueError:ValueError: could not convert string to float: ’24, 26, 99, 31, 623, 863, 77, 32, 362, 998, 1315, 33, 291, 14123, 39, 8, 335, 2308, 349, 403, 409, 1250, 417, 47, 1945, 50, 188, 51, 4493, 3343, 13419, 6107, 84, 18292, 339, 9655, 22498, 1871, 782, 1276, 2328, 56, 17633, 24004, 24236, 1901, 6112, 22506, 26397, 816, 502, 352, 24238, 18330, 7285, 2160, 220, 511, 17680, 68, 5137, 26398, 875, 542, 354, 2045, 555, 2145, 93, 327, 26399, 3158, 7501, 26400, 8215′ 。

    您能帮帮我吗。

    • Jason Brownlee 2018年12月29日 上午5:52 #

      也许您的数据中包含一个字符串?

      • Imen Drs 2018年12月29日 上午7:59 #

        数据包含“user, number_of_followers, list_of_followers, number_of_followee, list_of_followee, number_of_mentions, list_of_user_mentioned…”
        列表中的值用逗号分隔。
        例如:“36 ; 3 ; 52,3,87 ; 5 ; 63,785,22,11,6 ; 0 ; “

  273. Somashekhar 2019年1月2日 上午4:39 #

    你好,有没有关于使用LSTM解决pima-indians-diabetes.csv进行预测的帖子?

    • Jason Brownlee 2019年1月2日 上午6:42 #

      没有。LSTM仅用于序列数据,而Pima Indians数据集不是一个序列预测问题。

  274. Imen Drs 2019年1月4日 晚上9:56 #

    有没有办法使用数据集中的特定字段而不是整个上传的数据集?
    谢谢。

    • Jason Brownlee 2019年1月5日 上午6:56 #

      是的,字段是数据集矩阵中的列,您可以删除那些您不想用作模型输入的列。

  275. Kahina 2019年1月5日 上午12:43 #

    非常感谢!这很有帮助

  276. Khemmarut 2019年1月12日 晚上11:35 #

    回溯(最近一次调用)
    File “C:/Users/Admin/PycharmProjects/NN/nnt.py”, line 119, in
    rounded = [round(X[:1]) for x in predictions]
    File “C:/Users/Admin/PycharmProjects/NN/nnt.py”, line 119, in
    rounded = [round(X[:1]) for x in predictions]
    TypeError: type numpy.ndarray doesn’t define __round__ method

    请帮帮我

    谢谢你。

  277. Priti Pachpande 2019年1月31日 上午2:50 #

    嗨,Jason,
    感谢您提供的精彩教程。我正在使用Tensorflow后端在keras中构建一个自编码器模型。
    我需要在模型中使用Tensorflow(例如tf.ifft,tf.fft)函数。您能指导我如何做到这一点吗?我尝试使用lambda层,但使用它时准确率会下降。

    此外,我正在使用`model.predict()`函数来检查中间层之间的值。我这样做对吗?

    此外,您能指导我如何在keras中使用`reshape`函数吗?

    谢谢你的帮助

    • Jason Brownlee 2019年1月31日 上午5:36 #

      抱歉,我不知道您使用的函数。也许可以在stackoverflow上发帖?

  278. Crawford 2019年1月31日 晚上9:34 #

    嗨,Jason,
    您的教程太棒了,感谢您将这一切整理好。
    在本教程中,结果是1或0,但如果您有超过两个可能结果的数据,例如0、1、2或类似情况,该怎么办?
    我是否可以对您在这里提供的代码做些什么,还是需要完全不同的方法?
    我通过使用您的“第一个机器学习项目”中的KNN模型,在某种程度上实现了我想要做的事情,但我不得不简化我的数据,去除了一些变量。我认为这些额外的变量是有价值的,所以认为神经网络可能有用,但就像我说的,我有三种分类而不是两种。
    谢谢。

  279. Sergio 2019年2月1日 上午10:18 #

    你好,我正在尝试使用复数作为输入来构建一个神经网络,我遵循了您的建议,但出现了一个警告
    `
    ComplexWarning: Casting complex values to real discards the imaginary part return array(a, dtype, copy=False, order=order)

    代码可以正常运行,但预测的准确率只有25%。

    在神经网络中使用复数是否可能?

    您有什么建议吗?

  280. Arnab Kumar Mishra 2019年2月1日 晚上9:47 #

    嗨,Jason,

    我正在尝试运行教程中的代码,做了一些小的修改,但在训练时遇到了问题。

    训练损失和准确率在每个epoch都保持不变(请看下面的代码片段和输出)。这是针对另一个数据集,而不是糖尿病数据集。

    我尝试使用https://stackoverflow.com/questions/37213388/keras-accuracy-does-not-change 提供的建议来解决这个问题。

    但问题依然存在。

    您能帮我看看并解决这个问题吗?谢谢。

    CODE and OUTPUT Snippets

    # 创建模型
    model = Sequential()
    model.add(Dense(15, input_dim=9, activation=’relu’))
    model.add(Dense(10, activation=’relu’))
    model.add(Dense(5, activation=’relu’))
    model.add(Dense(1, activation=’sigmoid’))

    # 编译模型
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

    # 拟合模型
    model.fit(xTrain, yTrain, epochs=500, batch_size=10)

    第 1/200 纪元
    81/81 [==============================] – 0s 177us/step – loss: -8.4632 – acc: 0.4691
    Epoch 2/200
    81/81 [==============================] – 0s 148us/step – loss: -8.4632 – acc: 0.4691
    Epoch 3/200
    81/81 [==============================] – 0s 95us/step – loss: -8.4632 – acc: 0.4691
    Epoch 4/200
    81/81 [==============================] – 0s 116us/step – loss: -8.4632 – acc: 0.4691
    Epoch 5/200
    81/81 [==============================] – 0s 106us/step – loss: -8.4632 – acc: 0.4691
    Epoch 6/200
    81/81 [==============================] – 0s 98us/step – loss: -8.4632 – acc: 0.4691
    Epoch 7/200
    81/81 [==============================] – 0s 145us/step – loss: -8.4632 – acc: 0.4691
    Epoch 8/200
    81/81 [==============================] – 0s 138us/step – loss: -8.4632 – acc: 0.4691
    Epoch 9/200
    81/81 [==============================] – 0s 105us/step – loss: -8.4632 – acc: 0.4691
    Epoch 10/200
    81/81 [==============================] – 0s 128us/step – loss: -8.4632 – acc: 0.4691
    Epoch 11/200
    81/81 [==============================] – 0s 129us/step – loss: -8.4632 – acc: 0.4691
    Epoch 12/200
    81/81 [==============================] – 0s 111us/step – loss: -8.4632 – acc: 0.4691
    Epoch 13/200
    81/81 [==============================] – 0s 106us/step – loss: -8.4632 – acc: 0.4691
    Epoch 14/200
    81/81 [==============================] – 0s 144us/step – loss: -8.4632 – acc: 0.4691
    Epoch 15/200
    81/81 [==============================] – 0s 106us/step – loss: -8.4632 – acc: 0.4691
    Epoch 16/200
    81/81 [==============================] – 0s 180us/step – loss: -8.4632 – acc: 0.4691
    Epoch 17/200
    81/81 [==============================] – 0s 125us/step – loss: -8.4632 – acc: 0.4691
    Epoch 18/200
    81/81 [==============================] – 0s 183us/step – loss: -8.4632 – acc: 0.4691
    Epoch 19/200
    81/81 [==============================] – 0s 149us/step – loss: -8.4632 – acc: 0.4691
    Epoch 20/200
    81/81 [==============================] – 0s 146us/step – loss: -8.4632 – acc: 0.4691
    Epoch 21/200
    81/81 [==============================] – 0s 206us/step – loss: -8.4632 – acc: 0.4691
    Epoch 22/200
    81/81 [==============================] – 0s 135us/step – loss: -8.4632 – acc: 0.4691
    Epoch 23/200
    81/81 [==============================] – 0s 116us/step – loss: -8.4632 – acc: 0.4691
    Epoch 24/200
    81/81 [==============================] – 0s 135us/step – loss: -8.4632 – acc: 0.4691
    Epoch 25/200
    81/81 [==============================] – 0s 121us/step – loss: -8.4632 – acc: 0.4691
    Epoch 26/200
    81/81 [==============================] – 0s 110us/step – loss: -8.4632 – acc: 0.4691
    Epoch 27/200
    81/81 [==============================] – 0s 104us/step – loss: -8.4632 – acc: 0.4691
    Epoch 28/200
    81/81 [==============================] – 0s 122us/step – loss: -8.4632 – acc: 0.4691
    Epoch 29/200
    81/81 [==============================] – 0s 117us/step – loss: -8.4632 – acc: 0.4691
    Epoch 30/200
    81/81 [==============================] – 0s 111us/step – loss: -8.4632 – acc: 0.4691
    Epoch 31/200
    81/81 [==============================] – 0s 123us/step – loss: -8.4632 – acc: 0.4691
    Epoch 32/200
    81/81 [==============================] – 0s 116us/step – loss: -8.4632 – acc: 0.4691
    Epoch 33/200
    81/81 [==============================] – 0s 120us/step – loss: -8.4632 – acc: 0.4691
    Epoch 34/200
    81/81 [==============================] – 0s 156us/step – loss: -8.4632 – acc: 0.4691
    Epoch 35/200
    81/81 [==============================] – 0s 131us/step – loss: -8.4632 – acc: 0.4691
    Epoch 36/200
    81/81 [==============================] – 0s 122us/step – loss: -8.4632 – acc: 0.4691
    Epoch 37/200
    81/81 [==============================] – 0s 110us/step – loss: -8.4632 – acc: 0.4691
    Epoch 38/200
    81/81 [==============================] – 0s 121us/step – loss: -8.4632 – acc: 0.4691
    Epoch 39/200
    81/81 [==============================] – 0s 123us/step – loss: -8.4632 – acc: 0.4691
    Epoch 40/200
    81/81 [==============================] – 0s 111us/step – loss: -8.4632 – acc: 0.4691
    Epoch 41/200
    81/81 [==============================] – 0s 115us/step – loss: -8.4632 – acc: 0.4691
    Epoch 42/200
    81/81 [==============================] – 0s 119us/step – loss: -8.4632 – acc: 0.4691
    Epoch 43/200
    81/81 [==============================] – 0s 115us/step – loss: -8.4632 – acc: 0.4691
    Epoch 44/200
    81/81 [==============================] – 0s 133us/step – loss: -8.4632 – acc: 0.4691
    Epoch 45/200
    81/81 [==============================] – 0s 114us/step – loss: -8.4632 – acc: 0.4691
    Epoch 46/200
    81/81 [==============================] – 0s 112us/step – loss: -8.4632 – acc: 0.4691
    Epoch 47/200
    81/81 [==============================] – 0秒 143微秒/步 – loss: -8.4632 – acc: 0.4691
    Epoch 48/200
    81/81 [==============================] – 0秒 124微秒/步 – loss: -8.4632 – acc: 0.4691
    Epoch 49/200
    81/81 [==============================] – 0s 129us/step – loss: -8.4632 – acc: 0.4691
    Epoch 50/200

    其余的 epoch 也是如此。

  281. Nagesh 2019年2月4日 1:50 am #

    嗨,Jason,

    请告知我,我们是否可以绘制图形(epoch vs acc)?
    如果可以,怎么画。

  282. Nils 2019年2月5日 1:28 am #

    太棒了,谢谢!

    我只是想知道,第二章中描述了“init”参数,但在所有来源中都缺少它。
    我添加了它,例如

    model.add(Dense(12, input_dim=8, init=’uniform’ ,activation=’relu’))

    然后我收到了这个警告
    pima_diabetes.py:25: UserWarning: Update your Dense call to the Keras 2 API: Dense(12, input_dim=8, activation="relu"
    , kernel_initializer="uniform")

    model.add(Dense(12, input_dim=8, init=’uniform’ ,activation=’relu’))

    我的解决方案是改用“kernel_initializer”
    model.add(Dense(12, input_dim=8, activation=”relu”, kernel_initializer=”uniform”))

    关于同一行,我有一个问题:是否正确地添加了一个具有 8 个神经元的输入层和另一个具有 12 个神经元的隐藏层?
    那么,这样做是否会得到相同的 ANN?
    model.add(Dense(8, input_dim=8, kernel_initializer=’uniform’))
    model.add(Dense(8, activation=”relu”, kernel_initializer=’uniform’))

    • Jason Brownlee 2019年2月5日 8:29 am #

      是的,也许您看到的书本版本已过时,请给我发邮件以获取最新版本?

      是的,第一个隐藏层的定义也通过参数定义了输入层。

  283. Shuja 2019年2月8日 12:00 am #

    嗨 Jason
    我遇到了以下错误:
    (env) shuja@latitude:~$ python keras_test.py
    使用 TensorFlow 后端。
    回溯(最近一次调用)
    File “keras_test.py”, line 8, in
    dataset = numpy.loadtxt(“pima-indians-diabetes.csv”, delimiter=”,”)
    File “/home/shuja/env/lib/python3.6/site-packages/numpy/lib/npyio.py”, line 955, in loadtxt
    fh = np.lib._datasource.open(fname, ‘rt’, encoding=encoding)
    File “/home/shuja/env/lib/python3.6/site-packages/numpy/lib/_datasource.py”, line 266, in open
    return ds.open(path, mode, encoding=encoding, newline=newline)
    File “/home/shuja/env/lib/python3.6/site-packages/numpy/lib/_datasource.py”, line 624, in open
    raise IOError(“%s not found.” % path)
    OSError: pima-indians-diabetes.csv not found.

    • Jason Brownlee 2019年2月8日 7:52 am #

      看起来数据集没有下载并放在脚本的同一目录中。

  284. Shubham 2019年2月12日 4:55 am #

    嗨,Jason

    谢谢您的教程。
    您是否有好的参考或示例,我可以学习如何设置“对抗性神经网络”?

    Shubham

    • Jason Brownlee 2019年2月12日 8:08 am #

      目前还没有,我希望将来会涵盖这个主题。

  285. Daniel 2019年3月13日 8:14 am #

    嗨,Jason,

    我一直在阅读您关于各种机器学习主题的教程,并且我认为您的写作非常清晰简洁。感谢您使我遇到的几乎所有主题都易于理解。

    但是,我注意到的一件事是,您网页上的评论部分有时会占据整个网页的大部分。我第一次看到这个网站的前几次,我看到我的滚动条很小,并假设教程将是 15 页长,结果却发现您的介绍确实如您所承诺的那样“温和”,而页面开头之外的部分都是人们的回复以及您的回复。我认为如果您能以某种方式压缩回复(也许是一个“显示回复”按钮?)以便只显示实际内容,那将非常有帮助。这不仅会让一切看起来更好,而且我认为它还可以防止人们一开始就认为您的博客非常长,就像我过去几次一样。

    • Jason Brownlee 2019年3月13日 8:26 am #

      非常好的反馈,谢谢 Daniel。我将看看是否有好的 WordPress 插件可以实现这一点。

  286. ismael 2019年3月22日 5:22 am #

    不起作用,为什么

    • Jason Brownlee 2019年3月22日 8:39 am #

      很遗憾听到您遇到麻烦,具体是什么问题?

  287. Felix Daniel 2019年3月30日 7:09 am #

    在机器学习方面做得非常出色……我正在思考如何开始我的机器学习之旅,我在 LinkedIn 上随机搜索机器学习领域的人,就这样我来到了这里……我很高兴看到这个……这里是我开始构建机器学习的最终目的地。感谢您接受我在 LinkedIn 上的连接。

    我有一个项目要开始,但我不知道如何开始以及路线图。请给我详细的指导。

    这是主题

    人类活动识别系统,控制儿童和成人的超重问题。

  288. Akshaya E 2019年4月13日 11:38 pm #

    您能解释一下为什么我们在第一层使用 12 个神经元吗?8 个是输入,其余 4 个是偏置吗?

  289. Abhiram 2019年4月19日 11:50 pm #

    嗨 Jason,上面的预测值在 0 到 1 之间,我的标签是 1,1,1,2,2,2,3,3,3……36,36,36。
    现在我想预测类别 36,我该怎么办?

  290. Akash 2019年4月22日 12:56 am #

    嗨,Jason,

    我正在学习 NLP,在理解深度学习中的 NLP 时遇到困难。
    请问,您能帮助我将以下 N:N 转换为 N:1 模型吗?
    我想将我的 vec_y 从 max_input_words_amount 长度更改为 1。
    我应该如何定义层并使用 LSTM 或 RNN 或……?
    谢谢。

    x=df1[‘Question’].tolist()
    y=df1[‘Answer’].tolist()

    max_input_words_amount = 0
    tok_x = []
    for i in range(len(x))
    tokenized_q = nltk.word_tokenize(re.sub(r”[^a-z0-9]+”, ” “, x[i].lower()))
    max_input_words_amount = max(len(tokenized_q), max_input_words_amount)
    tok_x.append(tokenized_q)

    vec_x=[]
    for sent in tok_x
    sentvec = [ft_cbow_model[w] for w in sent]
    vec_x.append(sentvec)

    vec_y=[]
    for sent in y
    sentvec = [ft_cbow_model[sent]]
    vec_y.append(sentvec)

    for tok_sent in vec_x
    tok_sent[max_input_words_amount-1:]=[]
    tok_sent.append(ft_cbow_model[‘_E_’])

    for tok_sent in vec_x
    if len(tok_sent)<max_input_words_amount
    for i in range(max_input_words_amount-len(tok_sent))
    tok_sent.append(ft_cbow_model['_E_'])

    for tok_sent in vec_y
    tok_sent[max_input_words_amount-1:]=[]
    tok_sent.append(ft_cbow_model['_E_'])

    for tok_sent in vec_y
    if len(tok_sent)<max_input_words_amount
    for i in range(max_input_words_amount-len(tok_sent))
    tok_sent.append(ft_cbow_model['_E_'])

    vec_x=np.array(vec_x,dtype=np.float64)
    vec_y=np.array(vec_y,dtype=np.float64)

    x_train,x_test, y_train,y_test = train_test_split(vec_x, vec_y, test_size=0.2, random_state=1)

    model=Sequential()
    model.add(LSTM(output_dim=100,input_shape=x_train.shape[1:],return_sequences=True, init='glorot_normal', inner_init='glorot_normal', activation='sigmoid'))
    model.add(LSTM(output_dim=100,input_shape=x_train.shape[1:],return_sequences=True, init='glorot_normal', inner_init='glorot_normal', activation='sigmoid'))
    model.add(LSTM(output_dim=100,input_shape=x_train.shape[1:],return_sequences=True, init='glorot_normal', inner_init='glorot_normal', activation='sigmoid'))
    model.add(LSTM(output_dim=100,input_shape=x_train.shape[1:],return_sequences=False, init='glorot_normal', inner_init='glorot_normal', activation='sigmoid'))
    model.compile(loss='cosine_proximity', optimizer='adam', metrics=['accuracy'])

    model.fit(x_train, y_train, nb_epoch=100,validation_data=(x_test, y_test),verbose=0)

    • Jason Brownlee 2019年4月22日 6:25 am #

      我很乐意回答问题,但我没有能力审查您的代码,抱歉。

  291. Charlie 2019年4月22日 8:41 am #

    Jason – 我认为您确实是网上教授这些概念的最佳老师。您是否会发表一篇关于图卷积的文章?也许可以研究一下 Kipf 和 Welling 2016 GCN (https://arxiv.org/abs/1609.02907) 论文的概念,或者(理想情况下)一个在 Keras 中应用到图网络问题的实际示例,也许使用 Spektral,即最近的图卷积 Keras 库 (https://github.com/danielegrattarola/spektral) – 我将非常感激,并且随着图机器学习的兴起,例如根据这篇 DeepMind 论文 (https://arxiv.org/abs/1806.01261),我相信会有很多很棒的应用和人们的兴趣,但网上没有多少容易理解的内容。非常感谢您的期待。

  292. Kuda 2019年4月23日 10:01 pm #

    嗨 Jason

    非常感谢您的示例,它们非常清晰。您是否有 RBF 神经网络在 Python 中的实现?

  293. Tom Cole 2019年4月25日 5:18 am #

    您在 github 上有此模型的更新的 python 代码吗?我正在愉快地学习模型,但在进行数据分割和模型拟合步骤时,所需的库加载有所不同。
    谢谢

  294. Mridul 2019年4月26日 3:20 pm #

    嗨!Jason Brownlee,
    我尝试在 Jupyter Notebook 中实现模型。
    但是当我尝试运行时,一个错误消息显示“module ‘tensorflow’ has no attribute ‘get_default_graph'”,用于编译 model = Sequential()。我尝试了很久来解决它。但未能解决。
    您能帮助我吗?

  295. Royal 2019年5月5日 10:18 pm #

    嗨,Jason,
    超级教程!

    如果我运行 Your First Neural Network 一次,然后在同一 python 会话中(不重置 seed)重复运行几次,仅使用此代码

    model.fit(X, Y, epochs=150, batch_size=10, verbose=0)
    scores = model.evaluate(X, Y)
    print(“\n%s: %.2f%%” % (model.metrics_names[1], scores[1]*100))

    那么我平均可以获得大约 3% 的准确率提升(范围 77.85% – 83.07%)。显然,初始化值得益于之前的运行。
    在运行几次后找到的最佳拟合模型是否有意义?这可以提供近 5% 的准确率提升!
    或者我们是否过拟合了?

  296. Roger 2019年5月12日 1:53 am #

    (base) C:\Users\Roger\Documents\Python Scripts>python firstnn.py
    使用 Theano 后端。
    回溯(最近一次调用)
    File “firstnn.py”, line 14, in
    model.add(Dense(12, input_dim=8, activation=’relu’))
    File “C:\Users\Roger\Anaconda3\lib\site-packages\keras\engine\sequential.py”, line 165, in add
    layer(x)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\keras\engine\base_layer.py”, line 431, in __call__
    self.build(unpack_singleton(input_shapes))
    File “C:\Users\Roger\Anaconda3\lib\site-packages\keras\layers\core.py”, line 866, in build
    constraint=self.kernel_constraint)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\keras\legacy\interfaces.py”, line 91, in wrapper
    return func(*args, **kwargs)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\keras\engine\base_layer.py”, line 249, in add_weight
    weight = K.variable(initializer(shape),
    File “C:\Users\Roger\Anaconda3\lib\site-packages\keras\initializers.py”, line 218, in __call__
    dtype=dtype, seed=self.seed)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\keras\backend\theano_backend.py”, line 2600, in random_uniform
    return rng.uniform(shape, low=minval, high=maxval, dtype=dtype)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\sandbox\rng_mrg.py”, line 872, in uniform
    rstates = self.get_substream_rstates(nstreams, dtype)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\configparser.py”, line 117, in res
    return f(*args, **kwargs)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\sandbox\rng_mrg.py”, line 779, in get_substream_rstates
    multMatVect(rval[0], A1p72, M1, A2p72, M2)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\sandbox\rng_mrg.py”, line 62, in multMatVect
    [A_sym, s_sym, m_sym, A2_sym, s2_sym, m2_sym], o, profile=False)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\compile\function.py”, line 317, in function
    output_keys=output_keys)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\compile\pfunc.py”, line 486, in pfunc
    output_keys=output_keys)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\compile\function_module.py”, line 1841, in orig_function
    fn = m.create(defaults)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\compile\function_module.py”, line 1715, in create
    input_storage=input_storage_lists, storage_map=storage_map)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\link.py”, line 699, in make_thunk
    storage_map=storage_map)[:3]
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\vm.py”, line 1091, in make_all
    impl=impl))
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\op.py”, line 955, in make_thunk
    no_recycling)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\op.py”, line 858, in make_c_thunk
    output_storage=node_output_storage)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\cc.py”, line 1217, in make_thunk
    keep_lock=keep_lock)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\cc.py”, line 1157, in __compile__
    keep_lock=keep_lock)
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\cc.py”, line 1609, in cthunk_factory
    key = self.cmodule_key()
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\cc.py”, line 1300, in cmodule_key
    c_compiler=self.c_compiler(),
    File “C:\Users\Roger\Anaconda3\lib\site-packages\theano\gof\cc.py”, line 1379, in cmodule_key_
    np.core.multiarray._get_ndarray_c_version())
    AttributeError: (‘The following error happened while compiling the node’, DotModulo(A, s, m, A2, s2, m2), ‘\n’, “module ‘numpy.core.multiarray’ has no attribute ‘_get_ndarray_c_version'”)

    • Roger 2019年5月12日 1:58 am #

      我遵循了设置环境的所有步骤,但在运行代码时遇到了一个属性错误“module ‘numpy.core.multiarray’ has no attribute ‘_get_ndarray_c_version’”

      • Jason Brownlee 2019年5月12日 6:45 am #

        也许可以尝试在 stackoverflow 上搜索/发布?

    • Jason Brownlee 2019年5月12日 6:45 am #

      哎呀,也许 numpy 没有正确安装?

  297. Roger 2019年5月12日 8:34 pm #

    不,numpy 1.16.2 与当前 Anaconda 提供的 theano 1.0.3 不兼容。我降级到了 numpy 1.13.0。

  298. Aditya 2019年5月21日 5:02 pm #

    嗨,Jason,
    感谢这个精彩的示例!
    我在示例中观察到的是使用的数据库是纯数字的。
    我的疑问是
    如何修改示例以处理分类输入?
    如果输入是 One Hot 编码,它会起作用吗?

    • Jason Brownlee 2019年5月22日 7:38 am #

      是的,您可以使用 one hot 编码来处理输入的分类变量。

      • Aditya 2019年5月31日 3:41 pm #

        您能提供一个好的 OHE 在 Python 中的参考点吗?
        提前致谢!:)

          • Aditya 2019年6月2日 3:36 am #

            我阅读了链接,它很有帮助。现在,我有一个关于我的网络的特定疑问。
            我有 3 个分类输入,它们的大小不同。一个有大约 15 个“类别”,而另外两个有 5 个。所以在我对它们进行 One Hot 编码后,我是否必须通过填充使它们的大小相同?或者它会按原样工作?

          • Jason Brownlee 2019年6月2日 6:42 am #

            您可以对每个变量进行编码然后将它们连接成一个向量。

            或者您可以有一个模型,其中每个变量都有一个输入,并让模型将它们连接起来。

  299. Sri 2019年6月17日 7:29 pm #

    你好,

    如果有一个自变量(例如国家)有超过 100 个标签,该如何解决?
    我认为仅使用 one hot 编码将无法工作,也包括缩放。

    有什么替代方案吗?

    • Jason Brownlee 2019年6月18日 6:37 am #

      您可以尝试

      – 整数编码
      – One hot 编码
      – 嵌入

      测试每种方法,看看哪种最适合您的特定数据集。

  300. MK 2019年6月21日 7:05 pm #

    你好 jason,

    非常感谢您的帖子,对我帮助很大。

    1. 如何添加混淆矩阵?

    2. 如何更改学习率?

    祝您一切顺利 Martin

  301. Guhan palanivel 2019年7月1日 10:35 pm #

    嗨,杰森,
    我训练了一个具有 6 个月数据的神经网络模型,并在远程站点进行了部署,
    当收到新数据用于未来几个月时,
    是否有任何方法可以自动更新模型,并在其中添加新的训练数据?

    • Jason Brownlee 2019年7月2日 7:31 am #

      是的,也许最简单的方法是在新数据上或在所有可用数据上重新训练模型。

  302. Shubham 2019年7月5日 8:46 pm #

    你好 jason,

    我想打印出神经网络得分作为其中一个变量的函数,我该怎么做?

    此致
    Shubham

    • Jason Brownlee 2019年7月6日 8:35 am #

      也许可以尝试线性激活单元和 mse 损失函数?

  303. Maha Lakshmi 2019年7月17日 7:37 pm #

    先生,我正在使用 Python 中的 sklearn.neural_network.MLPClassifier。现在我想给分类器我自己的初始权重。我该怎么做?请帮帮我。提前致谢

    • Jason Brownlee 2019年7月18日 8:25 am #

      抱歉,我没有这方面的例子。

      也许可以尝试在 stackoverflow 上发布?

  304. Maha Lakshmi 2019年7月18日 4:09 pm #

    感谢您的回复

  305. Ron 2019年7月24日 8:39 am #

    数据归一化可以将准确率提高到 90% 以上。
    https://stackoverflow.com/questions/39525358/neural-network-accuracy-optimization

  306. Hammad 2019年7月29日 6:12 pm #

    尊敬的先生,

    我想将上面共享的示例应用于“train_test_split”生成的数组,但它不起作用,因为这些数组不是 numpy 格式的。

    我给你提供详细信息,我有一个“XYZ”数据集。该数据集具有以下规格

    总图片数 = 630
    每张图片提取了2500个特征。每个特征都是浮点类型。
    总类别数 = 7

    现在,在处理完特征文件后,我在以下变量中得到了结果

    XData:以二维数组形式包含特征数据(行:630,列:2500)
    YData:以一维数组形式包含原始类别标签(行:630,列:1)

    因此,使用以下代码,我将数据集分割为训练集和测试集

    from sklearn.model_selection import train_test_split
    x_train, x_test, y_train, y_test = train_test_split(XData, YData, stratify=YData, test_size=0.25)

    现在,我想将博客上分享的深度学习示例应用于我的数据集,该数据集现在是以数组形式存在的,并生成测试数据预测和准确率的输出。

    你能告诉我有什么方法可以处理上述数组吗?

    • Jason Brownlee 2019年7月30日 上午6:05 #

      是的,Keras模型可以直接操作numpy数组。

      也许我没有完全理解您遇到的问题?

      • Hammad 2019年7月30日 下午6:01 #

        尊敬的先生,

        谢谢,我已将我的数组转换为numpy格式。

        现在,我遵循了您关于多分类问题的教程(https://machinelearning.org.cn/multi-class-classification-tutorial-keras-deep-learning-library/),并使用了以下代码

        ############################################################
        import pandas
        来自 keras.models import Sequential
        from keras.layers import Dense
        来自 keras.wrappers.scikit_learn 的 KerasClassifier
        from keras.utils import np_utils
        from sklearn.model_selection import cross_val_score
        from sklearn.model_selection import KFold
        from sklearn.preprocessing import LabelEncoder
        from sklearn.pipeline import Pipeline
        from sklearn.metrics import accuracy_score

        seed=5
        totalclasses=7 #类别标签是:“p1”, “p2”, “p3”, “p4”, “p5”, “p6”, “p7”
        totalimages=630
        totalfeatures=2500 #从图像生成的特征

        #数据已从特征文件导入,结果是两个数组XData和YData
        #XData包含的不是numpy数组形式的特征数据集
        #YData包含的不是numpy数组形式的标签

        # 将类别值编码为整数
        encoder = LabelEncoder()
        encoder.fit(YData)
        encoded_Y = encoder.transform(YData)
        # 将整数转换为虚拟变量(即独热编码)
        dummy_y = np_utils.to_categorical(encoded_Y)

        # 定义基线模型
        def baseline_model()
        # 创建模型
        model = Sequential()
        model.add(Dense(8, input_dim=totalfeatures+1, activation=’relu’))
        model.add(Dense(totalclasses, activation=’softmax’))
        # 编译模型
        model.compile(loss=’categorical_crossentropy’, optimizer=’adam’, metrics=
        ‘accuracy’])
        return model

        estimator = KerasClassifier(build_fn=baseline_model, nb_epoch=200, batch_size=5, verbose=0)

        x_train, x_test, y_train, y_test = train_test_split(XData, dummy_y, test_size=0.25, random_state=seed)

        x_train = np.array(x_train)
        x_test = np.array(x_test)
        y_train = np.array(y_train)
        y_test = np.array(y_test)

        estimator.fit(x_train, y_train)
        predictions = estimator.predict(x_test)

        print(predictions)
        print(encoder.inverse_transform(predictions))

        ########################################################

        代码没有生成语法错误。

        现在,我想问

        1.我是否正确地应用了深度学习(神经网络模型)?
        2.我如何计算准确率、混淆矩阵和分类报告?
        3.您能否推荐我还可以将哪些其他类型的深度学习算法应用于此类问题?

        在应用了不同的深度学习算法后,我想比较它们的准确率,就像您在教程 https://machinelearning.org.cn/machine-learning-in-python-step-by-step/ 中通过绘制图表进行比较一样。

  307. Tyson 2019年9月3日 下午10:07 #

    嗨,Jason,
    很棒的教程。我现在正在尝试 UCI 档案中的新数据集。但是,当数据不完整时,我遇到了问题。那里不是数字,而是一个“?”,表示数据缺失或未知。所以我得到了
    ValueError: could not convert string to float: ‘?’

    有没有办法忽略这些数据?我确信许多数据集都有这个问题,其中包含缺失的数据。

    提前感谢!

    • Jason Brownlee 2019年9月4日 上午5:58 #

      是的,您可以将缺失数据替换为该变量的平均值或中位数,至少作为起点。

  308. Srinu 2019年9月10日 下午9:07 #

    您能否为相同的数据提供 GUI 代码,例如从网站或 Android 应用程序调用 ANN 模型?

  309. Hemanth Kumar 2019年9月20日 下午12:58 #

    尊敬的先生
    ValueError: Error when checking input: expected conv2d_5_input to have 4 dimensions, but got array with shape (250, 250, 3)
    我收到了这个错误

    我执行了哪些步骤
    original_image->resized to same resolution->converted to numpy array ->saved and loaded to x_train -> fed into network model ->modal.fit(x_train .. getting this error

  310. Hemanth Kumar 2019年9月20日 下午3:14 #

    谢谢您的回复,先生 🙂
    在此之后,我在 model.fit 时遇到 list index out of range 错误。

  311. Anthony The Koala 2019年9月26日 上午2:58 #

    尊敬的Jason博士,
    感谢您的本教程。
    我一直在调整层数和神经元数量。
    在当前代码中

    我尝试增加第一层的数量。

    结果是准确率并没有提高多少。
    增加层数有所提高。
    当每一层都有大量神经元时,准确率有所提高。
    这并非唯一的例子,但尝试以下代码

    准确率达到了91.1%。

    我添加了另外两个层。

    准确率略有下降至88%。

    从这些初步实验来看,增加神经元数量,如您第一个示例所示,并未提高准确率。
    然而,增加层数,尤其是带有大量神经元的层,确实将准确率提高到了大约91%。
    但是,如果层数过多,准确率会略微下降到88%。

    我的问题是,有没有办法将准确率提高到91%以上?

    谢谢你,
    悉尼的Anthony

  312. Anthony The Koala 2019年9月26日 上午6:05 #

    尊敬的Jason博士,
    进一步实验,我尝试了以下代码

    通过调整神经元数量,先增加后减少,我获得了 95% 的准确率。
    我无法系统地提高准确率。

    谢谢你,
    悉尼的Anthony

    • Jason Brownlee 2019年9月26日 上午6:46 #

      哈哈,是的。这正是神经网络的巨大未解之谜(没有好的理论来配置它们),这就是为什么我们必须使用经验方法。

  313. Anthony The Koala 2019年9月26日 下午1:57 #

    尊敬的Jason博士,
    感谢您的回复。

    是的,正如本教程所述,这是 Pima Indian 数据集。

    在我进一步阅读 10 折交叉验证之前,请简要回答
    * 过拟合是什么意思。
    * 为什么 96% 的准确率被认为是过拟合。

    去做
    尝试简单的函数,并尝试本教程,然后查看过拟合。
    例如,假设我们有 x = 0, 1, 2, 3, 4, 5 和 f(x) = x^2

    目标
    * 看看对于 x = 0..5 是否存在 x 和 f(x) 的准确映射。
    * 看看当我们预测 x = 6, 7, 8 时会发生什么。会是 36, 49, 64 吗?
    * 我们想知道是否存在过拟合模型。

    谢谢你,
    悉尼的Anthony

    • Jason Brownlee 2019年9月27日 上午7:43 #

      过拟合是指在训练集上表现更好,但测试集表现更差。

      它也可能意味着在测试/验证集上表现更好,但在新数据上表现更差。

      根据我的经验,该数据集的上限是 77-78%,因为我在过去大约 20 年的教程中都处理过它。

  314. Andrey 2019年9月29日 下午8:32 #

    嗨,Jason,

    我看到数据没有为训练和测试进行划分。为什么会这样?在这种情况下,预测意味着什么?

    Andrey

    • Jason Brownlee 2019年9月30日 上午6:07 #

      这可能意味着结果有点过于乐观。

      我这样做是为了让这个例子非常简单易懂。

  315. Anthony The Koala 2019年9月29日 下午9:00 #

    尊敬的Jason博士,
    我尝试为 x = [0,1,2,3,4,5] 的确定性模型 fx = x**2 这样做。
    我想看看机器学习如何处理确定性函数。
    但我只得到 16.67% 的准确率。
    这是基于本教程的代码。

    我们知道 fx = x**2 是可预测的。我需要做什么?

    谢谢你,
    悉尼的Anthony

    • Jason Brownlee 2019年10月1日 上午7:00 #

      也许你需要数十万个例子?

      也许模型需要针对您的问题进行调整,例如,也许使用 mse 损失和输出层中的线性激活函数,因为这是一个回归问题。

  316. Anthony The Koala 2019年10月1日 上午10:18 #

    尊敬的Jason博士,
    我尝试了 mse 损失和线性激活函数,但仍然只获得了 1% 的准确率。

    但是,我得到了这个

    我想映射一个确定性函数,看看机器学习是否能在没有公式的情况下找出 f(x)。

  317. Anthony The Koala 2019年10月1日 上午10:18 #

    尊敬的Jason博士,
    我从程序中删除了 model.evaluate。但仍然没有得到预期的值与实际值令人满意的匹配。

    输出

    尚未获得预期值和实际值之间的匹配

    谢谢你,
    悉尼的Anthony

  318. Anthony The Koala 2019年10月2日 上午7:41 #

    尊敬的Jason博士,
    我找不到系统的方法来找到机器学习算法使用它来计算确定性方程的方法,例如 y = f(x),其中 f(x) = x**2。

    我仍然有麻烦。我将把这个问题发布到这个页面上。本质上是 (i) 添加/删除层,(ii) 调整训练轮数,(iii) 调整 batch_size。但我还没有接近成功。

    另外,使用 model.predict 函数而不是 model.predict_classes。

    这是删除了大部分注释掉的行的程序。

    输出如下:

    无论我如何调整每层的神经元数量、层数、训练轮数和批次大小,“predicted”都呈现出算术级数,而不是几何级数。

    注意,预测值中连续项的差值 tn+1 – tn 对所有预测值都为 81。

    但是,我们知道 y = f(x) 中连续项之间的差值并不相同。

    例如,在非线性关系如 f(x) = x**2 中,f(x) = 0, 1, 2, 4, 9, 16, 25, 36,项之间的差值为:1, 1, 2, 5, 7, 9, 11,即 tn+1 – tn != tn+2 – tn+1。

    因此,在不知道公式的情况下,如何让机器学习算法计算 f(x) 仍然是个难题。

    • Jason Brownlee 2019年10月2日 上午8:15 #

      这是解决方案,希望有所帮助

      我想你也可以对预测值进行 inverse_transform() 来恢复到原始单位。

  319. Anthony The Koala 2019年10月2日 上午9:05 #

    尊敬的Jason博士,
    非常感谢您的回复。我得到了一个 mse,数量级为 3 x 10**-6。

    尽管如此,我还是会研究这个程序,并自己学习 (i) MinMaxScaler 以及我们为什么使用它,(ii) fit_transform(y),以及 (iii) 一个具有 10 个神经元的隐藏层。我还需要学习激活函数和损失函数的选择。Keras 网站有一个关于损失函数的章节,网址是 https://keras.org.cn/losses/,但看看 Python 的“IDLE”程序,从 keras 导入 losses,有很多损失函数是编译模型所必需的。

    此外,预测值需要重新计算才能恢复到其未缩放的值。所以我也会查找“rescaling”。

    再次感谢您,
    Anthony, 悉尼, 新南威尔士州

    • Jason Brownlee 2019年10月2日 上午10:10 #

      是的,您可以使用 inverse_transform 来取消预测值的缩放,正如我之前提到的。

  320. Anthony The Koala 2019年10月3日 上午6:26 #

    尊敬的Jason博士,
    我知道如何使用 inverse_transform 函数
    首先应用 MinMaxScaler 将其缩放到 0 到 1

    如果我们想重新构建 x 和 y,很简单

    x_s 和 y_s 存储了原始数据(转换前)的最小值和最大值。

    但是,如何将 yhat 转换回其原始尺度,因为它没有经过 inverse_transform 函数处理?

    如果我依赖于 y_s.inverse_transform(yhat),你得到的是

    我“希望”得到一些接近原始值的东西。

    但是 yhat 在开始时并没有使用 MinMaxScaler。

    我需要重写我自己的函数吗?

    谢谢,
    Anthony of Sydney NSW

    • Jason Brownlee 2019年10月3日 上午6:54 #

      模型预测的是缩放后的值,直接对 yhat 应用 inverse transform。

  321. Anthony The Koala 2019年10月3日 下午2:39 #

    尊敬的Jason博士,
    我就是这样做的,直接应用 yhat 的 inverse transform,但得到的是这些结果
    代码精简版

    我不明白如何获得 yhat 的逆转换,因为我不知道“未转换”的值,因为我没有估计它。

    谢谢你,
    悉尼的Anthony

    • Jason Brownlee 2019年10月4日 上午5:39 #

      您可以对 y 和 yhat 进行 inverse transform 并绘制两者。

  322. Anthony The Koala 2019年10月4日 上午3:20 #

    尊敬的Jason博士,
    我再次尝试了一下,以说明尽管预测值拟合了 f(x) 的缩放后的预测值和预期值的抛物线,但当“反缩放”回原始值时,结果似乎相当荒谬。
    代码 - 相关部分

    结果输出

    当我绘制 (x, yhat) 和 (x,f(x)) 时,绘图结果符合预期。但是当我将 yhat 重新缩放回来时,所有未缩放的 yhat 值都为 1030.0833,这非常奇怪。

    为什么?

    谢谢你,
    Anthony of Sydney NSW

  323. Anthony The Koala 2019年10月4日 上午3:31 #

    尊敬的Jason博士,
    我打印了 yhat,它们都一样。

    尽管如此,(x, yhat) 缩放值的绘图看起来像一个抛物线。
    注意:这是在缩放之前。

    然而,尽管缩放后的值 (x,yhat) 和 (x, y) 的图表符合预期,但 yhat 的值却是一样的。

    我不明白。您期望 yhat 和 f(x) 相似。

    我希望能得到答复。

    谢谢你,
    悉尼的Anthony

    • Jason Brownlee 2019年10月4日 上午5:49 #

      抱歉,我没有能力进一步调试您的示例。希望您能理解。

  324. Anthony The Koala 2019年10月4日 上午6:36 #

    尊敬的Jason博士,
    我在 https://datascience.stackexchange.com/questions/61223/reconstituting-estimated-predicted-values-to-original-scale-from-minmaxscaler 上提了这个问题,希望那里有答案。
    谢谢
    Anthony Of Sydney

    • Jason Brownlee 2019年10月4日 上午8:35 #

      这是解决方案

      缺失的三行是

  325. Anthony The Koala 2019年10月4日 上午9:59 #

    尊敬的Jason博士,
    我得出的结论是,肯定存在一个 bug,不是在您的解决方案中,也不是在我的解决方案中。我认为这是由于语言的较低层实现中的 bug 引起的。

    我打印了 yhat、f(x) 实际值和 x 的缩放版本,得到了这个结果。
    注意:yhat 的缩放版本的值是相同的。
    也就是说:

    尽管 (x, yhat) 和 (x, f(x) 的绘图成功,
    yhat 的缩放输出的前 10 个值是相同的,

    也就是说,如果我们绘制 (x, yhat),我们会得到一条直线,但绘图结果是一个抛物线。

    当我们执行以下转换时

    对于未缩放的 yhat 值,我们仍然遇到了相同的错误。第二列是 f(x),第三列是 x。

    结论:这既不是您解决方案的程序错误,也不是我的解决方案的程序错误。我认为这可能是较低层实现的问题。

    为什么我对这件事如此“执着”:因为如果我有更复杂的模型,我想看到重新缩放的预测/yhat 值。

    我不知道 StackExchange 上是否有人能提供见解。

    感谢您的时间,祝您一切顺利。

    悉尼的Anthony

    • Jason Brownlee 2019年10月6日 上午8:05 #

      我认为这是正确的,考虑到它是一个指数,模型决定它可以为了高端的正确性而牺牲低端的正确性——鉴于 MSE 的降低。

      试将示例数量从 1K 更改为 100,然后手动查看所有 100 个值——您就会明白我的意思。

      这一切都是一个很好的练习,干得好。

      • Anthony The Koala 2019年10月13日 晚上10:57 #

        尊敬的Jason博士,
        我重新做了这个问题,并取得了很好的结果!
        我无法解释为什么我得到了准确的结果,我本应得到准确的结果,但它们肯定是一个改进。

        重新缩放的原始值和拟合值产生了 RMS 为 0.0。

        这是代码,变量名略有更改。

        它奏效了,重新缩放的 yhat 的结果符合预期,但无法解释为什么之前的会“疯了”。需要对此进行更多实验。

        尽管如此,我的下一个项目是使用确定性函数进行 k-fold 采样,以查看重采样数据 fold 中的间隙是否能提供准确的预测,尽管每个 fold 中的采样是随机的。

        谢谢你,
        悉尼的Anthony

        • Anthony The Koala 2019年10月13日 晚上11:44 #

          尊敬的Jason博士,
          抱歉,我认为 RMS 是“不切实际的”。我有一个编程错误。
          尽管如此,我还是重新做了一遍,结果仍然令人满意。

          总而言之,重新缩放的 yhat 产生了更接近原始值的结果。重新缩放的 yhat 的较低值似乎很奇怪。

          尽管如此,底部的值需要更现实一些,即使重新缩放的 x 和重新缩放的 y,以及重新缩放的 x 和重新缩放的 yhat 的图看起来很接近。

          需要在批次大小、周期和优化器上进行更多研究。

          接下来,将对确定性函数进行 k-fold 采样,以查看重采样数据 fold 中的间隙是否能提供准确的预测,尽管每个 fold 中的采样是随机的。

          再次为上一篇文章中的错误表示歉意。

          悉尼的Anthony

        • Jason Brownlee 2019年10月14日 上午8:08 #

          干得好。

          • Anthony The Koala 2019年11月21日 上午5:03 #

            尊敬的Jason博士,
            一位名叫“Serali”的粒子物理学家在“StackExchange”上回复了我,并建议我打乱原始数据。在这种情况下,数据打乱与 k-fold 中的打乱无关。根据贡献者,结果应该会提高。来源:https://datascience.stackexchange.com/questions/61223/reconstituting-estimated-predicted-values-to-original-scale-from-minmaxscaler

            代码与我正在实验的代码完全相同。所以,我将展示开头必要的代码来打乱数据,并在最后取消打乱。

            开头的打乱代码

            最后的代码被“取消打乱”/排序,以显示实际值和预测值之间的差异。

            Here is a listing of x, f(x) and yhat

            Things to improve
            * adjusting the number of layers.
            * adjusting how many neurons in each layer
            * adjusting the batch size
            * adjusting the epoch size
            此外
            * look at k-folds for further model refinement.

            谢谢你
            悉尼的Anthony

          • Anthony The Koala November 24, 2019 at 4:12 pm #

            尊敬的Jason博士,
            Here is an even improved version with very close results.
            Instead of MinMaxScaler, I took the logs (to the base e) of the inputs x and f(x) applied my model, then retransformed my model to its original values.

            Snippets of code transforming the data

            The

            The resulting output: Note how close the actual f(x) is to the predicted f(x)

          • Jason Brownlee November 25, 2019 at 6:21 am #

            干得不错。

  326. kamu October 6, 2019 at 7:51 pm #

    嗨,Jason,
    Thank you very much for “Your First Deep Learning Project in Python with Keras Step-By-Step” tutorial. It is very useful for me. I want to ask you
    Can I code

    model.add(Dense(8)) # input layer
    model.add(Dense(12, activation=’relu’)) # first hidden layer

    而不是

    model.add(Dense(12, input_dim=8, activation=’relu’)) # input layer and first hidden layer

    Sincerely.

    • Jason Brownlee October 7, 2019 at 8:29 am #

      不行。

      The input_dim argument defines the input layer.

  327. keryums October 17, 2019 at 1:22 am #

    Hi Jason, is it not necessary to use the keras utilility ‘to_categorical’ to convert your y vector into a matrix before fitting the model?

    • Jason Brownlee October 17, 2019 at 6:37 am #

      You can, or you can use the sklearn tools to do the same thing.

  328. Aquilla Setiawan Kanadi October 17, 2019 at 6:35 am #

    嗨,Jason,

    Thanks a lot for your tutorial about deep learning project, it really help me a lot in my journey to learn machine learning.

    I have a question about the data splitting in code above, how is the splitting work between data for training and the data for validate the training data? I’ve tried to read your tutorial about the data splitting but i have no ideas about the data splitting work above.

    Thankyou,

    Aquilla

    • Jason Brownlee October 17, 2019 at 6:47 am #

      We did not split the data, we fit and evaluated on one set. We did this for brevity.

  329. Love your work! October 17, 2019 at 11:43 am #

    嗨,Jason,

    I just wanted to thank you. This tutorial is incredibly clear and well presented. Unlike many other online tutorials you explain very eloquently the intuition behind the lines of code and what is being accomplished which is very useful. As someone just starting out with Keras I had been finding some of the coding, as well as how Keras and Tensorflow interact, confusing. After your explanations Keras seems incredibly basic. I’ve been looking over some of my recent code from other Keras tutorials and I now understand how everything works.

    再次感谢!

    • Jason Brownlee October 17, 2019 at 1:50 pm #

      Well done on your progress and thanks for your support!

  330. Ahmed October 19, 2019 at 6:16 am #

    Dear Jason. I am deeply grateful to this amazing work. Everything works well so far. King Regards

  331. JAMES JONAH October 28, 2019 at 10:56 am #

    Please i need help, which algorithms is the best in cyber threat detection and how to implement it. thanks

  332. shivan October 29, 2019 at 7:01 am #

    先生,你好
    do you have an implementation about (medical image analysis with deep learning).
    i need to start with medical image NOT real world image
    thanks for your help.

    • Jason Brownlee October 29, 2019 at 1:47 pm #

      没有,抱歉。

      • shivan October 31, 2019 at 9:18 am #

        so, what do you recommend me about it
        谢谢。

        • Jason Brownlee October 31, 2019 at 1:36 pm #

          Perhaps start by collecting a dataset.

          Then consider reviewing the literature to see what types of data prep and models other have used for similar data.

  333. Nasir Shah October 30, 2019 at 7:27 am #

    Sir. i am new to neural network. so from where i start it. or which tutorial i watch . i didn’t have any idea about it.

  334. hima hansi November 3, 2019 at 1:35 pm #

    hello sir, I’m new to this field. I’m going to develop monophonic musical instrument classification system using python and Keras. sir,I want to find monophonic data set, how can I find it.
    I try to get piano music from you tube and convert it to .waw file and splitting it. Is it a good or bad ? or an other methods available to get free data set on the web.. give your suggestions please ??

  335. Mona Ahmed November 20, 2019 at 3:14 am #

    i got score 76.69

  336. Niall Xie November 26, 2019 at 8:26 am #

    Hello, I just want to say that I am elated to use your tutorial. So, I am working on a group project with my team and I used datasets representing heart disease, diabetes and breast cancer for this tutorial. However, this code example will give an error when the cell contains a string value, in this case… title names like clump_thickess and ? will produce an error. how do I fix this?

  337. Mohamed November 28, 2019 at 10:46 pm #

    thank you sir for this article, would you please suggest an example with testing data ?

    • Jason Brownlee November 29, 2019 at 6:49 am #

      Sorry I don’t understand your question, can you elaborate?

  338. Chris December 3, 2019 at 10:49 pm #

    I believe there is something wrong with the (150/10) 15 updates to the model weights. The internal coefficients are updated after every single batch. Our data is comprised of 768 samples. Since batch_size=10, we obtain 77 batches (76 with 10 samples and one with 8). Therefore, at each epoch we should see 77 updates of weights and coefficients and not 15. Moreover, the total number of updates must be: 150*77=11550. Am I missing something important?

    Really good job and very well-written article (all your articles). Keep up the good job. Cheers

    • Jason Brownlee December 4, 2019 at 5:37 am #

      You’re right. Not sure what I was thinking there. Simplified.

  339. Justine December 14, 2019 at 9:58 am #

    Thanks! This is my first foray into keras, and the tutorial went swimmingly. Am now training on my own data. It is not performing worse than on my other machine learning models (that’s a win :).

  340. x December 17, 2019 at 8:37 am #

    Hi,Jason. Thanks so much for your answer. Now my question is why I can’t found my directory in Jupyter and put the ‘pima-indians-diabetes.csv’ in it.
    OSError Traceback (most recent call last)
    in
    4 from keras.layers import Dense
    5 # load the dataset
    —-> 6 dataset = loadtxt(‘pima-indians-diabetes.csv’, delimiter=’,’)
    7 # split into input (X) and output (y) variables
    8 X = dataset[:,0:8]

    D:\anaconda\lib\site-packages\numpy\lib\npyio.py in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding, max_rows)
    966 fname = os_fspath(fname)
    967 if _is_string_like(fname)
    –> 968 fh = np.lib._datasource.open(fname, ‘rt’, encoding=encoding)
    969 fencoding = getattr(fh, ‘encoding’, ‘latin1’)
    970 fh = iter(fh)

    D:\anaconda\lib\site-packages\numpy\lib\_datasource.py in open(path, mode, destpath, encoding, newline)
    267
    268 ds = DataSource(destpath)
    –> 269 return ds.open(path, mode, encoding=encoding, newline=newline)
    270
    271

    D:\anaconda\lib\site-packages\numpy\lib\_datasource.py in open(self, path, mode, encoding, newline)
    621 encoding=encoding, newline=newline)
    622 else
    –> 623 raise IOError(“%s not found.” % path)
    624
    625

    OSError: pima-indians-diabetes.csv not found.

  341. Manohar Nookala December 22, 2019 at 9:32 pm #

    你好,先生,
    My name is manohar. i trained a deep learning model on car price prediction. i got

    loss: nan – acc: 0.0000e+00. if you give me your email ID then i will send you. you can tell me the problem. please do this help because i am a beginner.

    • Jason Brownlee December 23, 2019 at 6:48 am #

      Perhaps you need to scale the data prior to fitting?
      Perhaps you need to use relu activation?
      Perhaps you need some type of regularization?
      Perhaps you need a larger or smaller model?

  342. Shone Xu January 5, 2020 at 1:24 am #

    嗨,Jason,

    thanks and it is a great tutorial. just 1 question. do we have to train the model by “model.fit(x, y, epochs=150, batch_size=10)” every time before making the prediction because it takes a very long time to train the model. I am just wondering whether it is possible to save the trained model and go straight to the prediction skipping the model.fit (eg: pickle)?

    many thanks for your advice in advance

    祝好

  343. ustengg January 8, 2020 at 7:40 pm #

    Thank you so much for this tutorial sir but How can I use the model to predict using data outside the dataset?

    • Jason Brownlee January 9, 2020 at 7:24 am #

      Call model.predict() with the new inputs.

      See the “Make Predictions” section.

      • ustengg January 9, 2020 at 4:07 pm #

        Nice! Thank you so much, Sir. I figured it out using the link on the “Make predictions” section. I’ve learned a lot from your tutorials. You’re the best!

  344. monica January 23, 2020 at 4:00 am #

    嗨,Jason,

    Thanks for sharing this post.

    I have a question, when I tried to split the dataset
    (X = dataset[:,0:8]
    y = dataset[:,8])

    it gives me an error: TypeError: ‘(slice(None, None, None), slice(0, 8, None))’ is an invalid key

    how can I fix it?

    谢谢,

    monica

  345. Sam Sarjant January 23, 2020 at 9:11 pm #

    Thanks for the tutorial! This is a wonderful ‘Hello World’ to Deep Learning

  346. Keerthan January 24, 2020 at 4:01 pm #

    Hello Jason! hope you are doing good.
    I am actually doing a project on classification of thyroid disease using back propagation with stocastic gradient descent method,can you help me out with the code a little bit?

    • Jason Brownlee January 25, 2020 at 8:31 am #

      Perhaps start by adapting the code in the above tutorial?

  347. Shakir January 25, 2020 at 1:29 am #

    尊敬的先生
    I want to predict air pollution using deep learning techniques please suggest how to go about with my data sets

  348. Yared February 7, 2020 at 4:36 pm #

    AttributeError: module ‘tensorflow’ has no attribute ‘get_default_graph’AttributeError: module ‘tensorflow’ has no attribute ‘get_default_graph’

  349. Yared February 7, 2020 at 4:41 pm #

    我使用 LSTM 技术对句子中的协议错误进行了检测,请您为我的数据集提供建议。

  350. Pavitra Nayak 2020年2月29日下午2:55 #

    你好,Jason
    我正在为我的项目使用此代码。它对您的数据集效果完美。但是我的数据集有很多 0 和 1。因此,我的预测结果是错误的。我该如何解决这个问题?

  351. nurul 2020年3月6日下午5:50 #

    你好。我想问一下。我按照所有步骤操作了,但是在拟合模型时卡住了。出现了这个错误。我该如何解决这个问题?

    • kiki 2020年3月6日下午6:44 #

      我已经尝试了这一步,并在拟合阶段卡住了,并且出现了此错误。您对我的问题有什么解决方案吗?

      —————————————————————————
      ValueError 回溯 (最近一次调用)
      in
      1 # 在数据集上拟合 keras 模型
      —-> 2 model.fit(x, y, batch_size=10,epochs=150)

      ~\Anaconda4\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
      1152 sample_weight=sample_weight,
      1153 class_weight=class_weight,
      -> 1154 batch_size=batch_size)
      1155
      1156 # 准备验证数据。

      ~\Anaconda4\lib\site-packages\keras\engine\training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_array_lengths, batch_size)
      577 feed_input_shapes,
      578 check_batch_axis=False, # 不强制批次大小。
      –> 579 exception_prefix=’input’)
      580
      581 if y is not None

      ~\Anaconda4\lib\site-packages\keras\engine\training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
      143 ‘: 期望 ‘ + names[i] + ‘ 的形状为 ‘ +
      144 str(shape) + ‘ 但得到形状为 ‘ +
      –> 145 str(data_shape))
      146 return data
      147

      ValueError: 检查输入时出错:期望 dense_133_input 的形状为 (16,) 但得到形状为 (17,) 的数组

    • Jason Brownlee 2020年3月7日上午7:13 #

      很抱歉听到这个消息,也许这会有所帮助。
      https://machinelearning.org.cn/faq/single-faq/why-does-the-code-in-the-tutorial-not-work-for-me

  352. laz 2020年3月7日下午2:59 #

    你好,Jason!

    再次… 感谢您精彩的教程,感谢您将知识公开!>800条评论,几乎全部得到了回复,您太棒了。我无法理解您如何处理这一切,撰写精彩的内容,进行机器学习,教学,学习,非常尊重!

    2个普遍性问题

    问题(1)

    为什么以及何时我们需要对输入进行 flatten(),在哪些情况下不需要?

    例如,4个数值输入,每个输入的滞后2意味着每个批次有4*2=8个值

    我总是这样做,无论有多少输入或滞后,我将其作为扁平数组输入。

    1 个设置/批次:[[1.0,1.1, 2.0,2.1, 3.0,3.1, 4.0,4.1]]

    Input(shape=(8,)) # keras func api

    输入这样的结构是否有意义,如果有,为什么/何时?

    更好的?[[[1.0,1.1], [2.0,2.1], [3.0,3.1], [4.0,4.1]]]

    问题(2)

    您还在使用 Theano 吗?由于他们不更新它,它变得越来越旧,但并不差;)。我尝试了很多 Tensorflow – 但速度方面总是表现不佳。Theano 对我来说要快得多(3-10 倍)。但是使用超过 1 个核心对我来说总是更慢,无论是在 theano 还是 tf 中。您是否遇到过类似的情况?我也尝试过 torch,它很好,但它也比我用的 theano 慢。有什么想法或替代方案吗(我不能使用 gpu/external/aws)?

    我很高兴看到您进行一些深度强化学习(DRL)的工作,您怎么看?您在做吗?

    此致,继续加油 😉

  353. laz 2020年3月8日上午11:29 #

    亲爱的 Jason,谢谢你的回答;)…

    “当一个层的输出形状与另一个层的输入形状不匹配时,例如 CNN 输出到 Dense,您需要进行扁平化。”

    谢谢。关于“flatten”操作的问题并不是关于层之间的 flatten(),而是关于如何将输入呈现给输入层。抱歉表达得不够清晰。也许我误解了什么,是否有不扁平化 FEATURES/INPUTS/LAGS 的用例?

    “强化学习不实用/没有用”
    这个陈述是基于您的经验,还是您在没有自己检查的情况下就采纳了别人的意见?请不要误解,您是这里的专家。但是,我可以反驳一些反对强化学习的论点。

    奖励难以创建:取决于您的环境
    不稳定:取决于您的环境、代码、设置

    我开始尝试一个简单的 DQN,我一步步地扩展它,现在我有了“Dueling Double DQN”。它学习得很好而且很快。我承认 – 在简单的数据上。但它是可重复和可复现的!所以我想说:总的来说,它是有效的。

    我需要看看它在更复杂的数据上是如何工作的。这就是为什么我强调这种方法的性能在很大程度上取决于应用领域。

    但是有一个巨大的问题,大多数公开的资源包含错误的代码或错误的实现。我从未在任何主题上报告或发现过如此多的错误。这些错误被一次又一次地复制,最终许多人认为它们是正确的。我收集了大量的链接和 PDF 文件来理解和调试这个野兽。

    没关系,您必须自己决定。如果您想看看,请举一个简单的例子,即使是 DQN(没有 dueling 或 double)也能学会 – 如果代码是正确的。而且,虽然我不是数学家:理解它是如何工作的以及它提供的可能性——让我笑了 😉…

  354. laz 2020年3月8日晚上10:44 #

    有趣的阅读

    “我们使用双深度 Q 网络(DDQN)来找到合适的材料类型和最优的几何设计,用于超表面全息图以实现高效率。DDQN 就像一个智能扫描,在仅 2169 步之后就能识别出约 57 亿个状态中的最优结果。在 23 种不同的材料类型和各种几何属性的三层结构之间找到了最优结果。计算出的透射效率为 32%,适用于高质量的超表面全息图;这比之前在相同条件下报告的结果大两倍。”

    https://www.nature.com/articles/s41598-019-47154-z

  355. YzN 2020年3月11日上午4:01 #

    简直是最好的“第一个神经网络教程”
    通过添加层和减小批次大小,我获得了 85.68 的准确率。

  356. Neha 2020年3月14日晚上12:05 #

    你好 Jason,
    我有一个快速的问题。
    我正在为二元分类任务构建一个 sigmoid 神经元,基本上我遵循的是 1 个 sigmoid 模型是这样的。

    model = Sequential()
    model.add(Dense(1, activation=’sigmoid’))

    我的输入是大小为 (39*39*3) 的图像。

    我不确定如何将这些图像输入到我的 Dense 层(这是我唯一使用的层)。

    我现在使用以下方法输入我的图像:

    train_generator = train_datagen.flow_from_directory(train_data_dir,
    target_size=(39, 39),
    batch_size=batch_size)
    class_mode='binary')

    但是 Dense 层无法接受输入形状 (39, 39, 3)。

    那么我的问题是,如何将我的图像数据输入到 Dense 层?

    • Jason Brownlee 2020年3月14日上午8:13 #

      您可以对输入进行扁平化,或者使用 CNN 作为输入,它专门用于处理 3D 输入样本。

  357. Bertrand Bru 2020年3月29日凌晨12:38 #

    嗨,Jason,

    非常感谢您的教程。

    我刚开始接触深度学习。我能够修改您的代码并使其在我用 3 轴加速度计记录的数据集上工作。我的目标是检测我是在行走还是在跑步。我为每种活动记录了大约 50 次试验。从信号中,我计算了能够区分这两种活动的特定参数。在参数中,我计算了所有轴的平均值、最小值和最大值,以及频域中的一些参数(功率谱的前 3 个峰值及其相应的位置)。

    它效果非常好,我能够轻松地检测到我是在跑步还是在行走。

    然后我决定添加第三种活动:站立。我也记录了 50 次此活动的试验。如果我用站立和跑步训练我的模型,我可以识别这两种活动。如果我用站立和行走或行走和站立训练它,也是如此。

    如果我用这三种活动来训练我的模型,那就更复杂了。实际上,它做不到。它只能识别前两种活动。因此,例如,如果站立、行走和跑步的 ID 分别为 0、1 和 2,那么它只能检测 0 和 1(站立和行走)。它认为所有跑步试验都是行走试验。如果站立、跑步和行走分别有 ID:0、1 和 2,那么它只能检测 0 和 1(站立和跑步)。它认为所有行走试验都是跑步试验。

    所以我的问题是:假设您拥有数据集,如果您需要修改您的脚本以检测人们是否为 0:非糖尿病,1:1 型糖尿病患者,2:2 型糖尿病患者,您将如何修改您的脚本?

    非常感谢您的帮助。

  358. Dipak Kambale 2020年3月31日晚上10:16 #

    嗨,Jason,

    我获得了 75.52 的准确率。这可以吗?请告诉我。

  359. islamuddin 2020年4月1日晚上6:20 #

    杰森教授您好。
    教授,如何使准确率稳定运行代码?给出示例 86%,下次 82% 如何解决这个问题!

    #导入
    from numpy import loadtxt
    来自 keras.models import Sequential
    from keras.layers import Dense

    # 加载数据集
    dataset = loadtxt(‘E:/ms/impotnt/iwp1.csv’, delimiter=’,’)
    # 分割为输入 (X) 和输出 (y) 变量
    X = dataset[:,0:8]
    y = dataset[:,8]
    # 定义 Keras 模型

    #model = Sequential()
    model = Sequential()
    #model.add(Dense(25, input_dim=8, init=’uniform’, activation=’relu’))
    model.add(Dense(30, input_dim=8, activation=’relu’))
    model.add(Dense(95, activation=’relu’))
    model.add(Dense(377, activation=’relu’))
    model.add(Dense(233, activation=’relu’))
    model.add(Dense(55, activation=’relu’))
    model.add(Dense(1, activation=’sigmoid’))

    # 编译 Keras 模型
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    # 在数据集上拟合 Keras 模型
    model.fit(X, y, epochs=150, batch_size=10)
    # 评估 Keras 模型
    _, accuracy = model.evaluate(X, y)
    print(‘Accuracy: %.2f’ % (accuracy*100))

    输出

    0.1153 – accuracy: 0.9531
    第 149 周期/150
    768/768 [==============================] – 0s 278us/step – loss: 0.1330 – accuracy: 0.9401
    第 150 周期/150
    768/768 [==============================] – 0s 277us/step – loss: 0.1468 – accuracy: 0.9375
    768/768 [==============================] – 0s 41us/step
    准确率:94.01

  360. M Husnain Ali Nasir 2020年4月3日凌晨2:55 #

    回溯(最近一次调用)
    文件“keras_first_network.py”,第 7 行,在
    dataset = loadtxt(‘pima-indians-diabetes.csv’, delimiter=’,’)
    文件 “C:\Users\Hussnain\anaconda3\lib\site-packages\numpy\lib\npyio.py”,第 1159 行,在 loadtxt
    for x in read_data(_loadtxt_chunksize)
    文件 “C:\Users\Hussnain\anaconda3\lib\site-packages\numpy\lib\npyio.py”,第 1087 行,在 read_data
    items = [conv(val) for (conv, val) in zip(converters, vals)]
    File “C:\Users\Hussnain\anaconda3\lib\site-packages\numpy\lib\npyio.py”, line 1087, in
    items = [conv(val) for (conv, val) in zip(converters, vals)]
    文件 “C:\Users\Hussnain\anaconda3\lib\site-packages\numpy\lib\npyio.py”,第 794 行,在 floatconv
    return float(x)
    ValueError: 无法将字符串“\"6”转换为浮点数。

    我运行它时出现了上述错误,请帮忙。我正在使用 Anaconda 3,Python 3.7,tensorflow,keras。

  361. Madhawa Akalanka 2020年4月9日下午6:22 #

    (base) C:\Users\Madhawa Akalanka\python codes>python keras_first_network.py
    使用 TensorFlow 后端。
    2020-04-09 13:42:28.003791: I tensorflow/core/platform/cpu_feature_guard.cc:142]
    您的 CPU 支持此 TensorFlow 二进制文件未编译的指令
    使用:AVX AVX2
    2020-04-09 13:42:28.014066: I tensorflow/core/common_runtime/process_util.cc:147
    ] 创建新的线程池,默认的 inter op 设置为:2。使用 inter_op 进行调整
    _parallelism_threads 以获得最佳性能。
    回溯(最近一次调用)
    文件 “keras_first_network.py”,第 12 行,在
    model.fix(X,Y,epochs=150,batch_size=10)
    AttributeError: ‘Sequential’ 对象没有属性 ‘fix’

    运行此代码时出现此错误。请帮忙。

  362. Rahim Dehkharghani 2020年4月14日凌晨2:05 #

    亲爱的Jason
    感谢您精彩的网站和书籍。我是一名博士,也是您在深度学习领域的一位粉丝。有时我感到失望,因为我无法在该领域实现我的目标。我的目标是发现新事物并发表它。虽然我大多能理解您的代码,但为该领域做出贡献很难,需要理解整个理论,而我到目前为止还未能做到。您能给我一些建议继续吗?非常感谢。

    • Jason Brownlee 2020年4月14日上午6:25 #

      不客气。

      坚持每天练习。这是我最好的建议。

  363. MattGurney 2020年4月16日晚上10:52 #

    有一个拼写错误:“input to the model lis defined” (输入到模型的列表被定义)。

  364. MattGurney 2020年4月16日晚上11:28 #

    使用今天的最新库,我收到了许多由于最新 numpy:1.18.1 与最新 TensorFlow:1.13.1 不兼容而产生的警告。


    FutureWarning: 传递 (type, 1) 或 ‘1type’ … (6 次)
    to_int32 (来自 tensorflow.python.ops.math_ops) 已弃用。

    选项是回滚到旧版 numpy 或抑制警告,我选择了抑制警告,代码如下:

    # 使用 Keras 教程的第一个神经网络

    # 抑制 TF / numpy 版本不兼容的警告:https://github.com/tensorflow/tensorflow/issues/30427#issuecomment-527891497
    import warnings
    warnings.filterwarnings(‘ignore’, category=FutureWarning)

    import tensorflow

    # 抑制 TF 的警告:to_int32 (来自 tensorflow.python.ops.math_ops) 已弃用:https://github.com/aamini/introtodeeplearning/issues/25#issuecomment-578404772
    import logging
    logging.getLogger(‘tensorflow’).setLevel(logging.ERROR)

    import keras
    from numpy import loadtxt
    来自 keras.models import Sequential
    from keras.layers import Dense

  365. meryem 2020年4月17日凌晨1:25 #

    感谢 Jason 的教程。我通过添加 dropout 和 X 的标准化来应用我的示例。

    X = dataset[:, 0:7]
    y = dataset[:, 7]

    scaler = MinMaxScaler(feature_range=(0, 1))
    X = scaler.fit_transform(X)
    # 定义 Keras 模型
    model = Sequential()
    model.add(Dense(6, input_dim=7, activation=’relu’))
    model.add(Dropout(rate=0.3))
    model.add(Dense(6, activation=’relu’))
    model.add(Dropout(rate=0.3))
    model.add(Dense(1, activation=’sigmoid’))
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’]
    history=model.fit(X, y, epochs=30, batch_size=30, validation_split=0.1)
    _, accuracy = model.evaluate(X, y)
    print(‘Accuracy: %.2f’ % (accuracy*100))

    我的准确率显示为 100%,这不正常。为了调整我的模型,我应该怎么做?

    • Jason Brownlee 2020年4月17日上午6:22 #

      干得好!

      也许可以使用 k 折交叉验证来评估您的模型。

  366. meryem 2020年4月17日上午7:29 #

    是的,我遵循了您使用 k 折交叉验证的示例,它总是给我 100%。

    如果我移动标准化,它会给出 83%,您能指导我一下吗?

    seed = 4
    numpy.random.seed(seed)
    dataset = loadtxt(‘data.csv’, delimiter=’,’)
    X = dataset[:, 0:7]
    Y = dataset[:, 7]
    from sklearn.preprocessing import StandardScaler
    sc = StandardScaler()
    X = sc.fit_transform(X)
    kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=seed)
    cvscores = []
    for train, test in kfold.split(X,Y)
    model = Sequential()
    model.add(Dense(12, input_dim=7, activation=”relu”))
    model.add(Dropout(rate=0.2))
    model.add(Dense(6, activation=”relu”))
    model.add(Dropout(rate=0.2))
    model.add(Dense(1, activation=”sigmoid”))
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    model.fit(X[train], Y[train], epochs=20, batch_size=10, verbose=1)
    scores = model.evaluate(X[test], Y[test], verbose=0)
    print(“%s: %.2f%%” % (model.metrics_names[1], scores[1]*100))
    cvscores.append(scores[1] * 100)
    print(“%.2f%% (+/- %.2f%%)” % (numpy.mean(cvscores), numpy.std(cvscores)))

  367. meryem 2020年4月17日晚上8:08 #

    您非常有帮助。
    或者因为我的数据不够多。所以没有其他东西我能用了吗?

  368. Farjad Haider 2020年4月17日晚上11:00 #

    Jason 先生,您太棒了!如此好且易于理解的教程。工作出色!

  369. Joan Estrada 2020年4月19日凌晨3:51 #

    “请注意,最令人困惑的是,模型输入的形状被定义为第一个隐藏层的参数。这意味着添加第一个 Dense 层的代码行执行两项操作:定义输入层或可见层,以及第一个隐藏层。”

    您能更好地解释一下吗?谢谢,工作出色!

  370. Hany 2020年4月19日上午9:57 #

    事实上,布朗利博士,我无法感谢您足够多。

    上帝保佑你。

  371. Rahim 2020年4月22日上午5:56 #

    亲爱的Jason
    感谢这个有趣的 कोड。我在我的电脑上用 keras 2.3.1 测试了这段代码在 pima-indians-diabetes 上,但奇怪的是我的准确率是 52%。我想知道为什么你的准确率(76%)和我的(52%)之间会有这么大的差异。

    • Jason Brownlee 2020年4月22日上午6:10 #

      不客气。

      或许可以尝试多运行几次这个例子?

  372. Sarmad 2020年4月24日晚上8:04 #

    想问:在第一层(隐藏层)中,我们根据拥有的特征定义了 input_dim=8。并且我们指定了神经元=12。但问题是,我学到的一点是,我们根据输入(特征)来指定神经元。意思是,如果我们有 8 个输入,那么神经元也将是 8 个。但您指定了 12 个。为什么?
    2)在任何问题中,我们是否都必须指定一个神经网络,对吧?它可以是任何东西,例如:卷积、循环等。那么我们在这里选择了哪种神经网络?在哪里?
    3)我们必须分配权重。那么在哪里分配?
    请告诉我。谢谢您,先生。

  373. Sarmad 2020年4月24日晚上8:31 #

    权重、偏差和输入值在哪里?

    • Jason Brownlee 2020年4月25日上午6:46 #

      当我们调用 compile() 时,权重被初始化为小的随机值。

  374. mouna 2020年4月26日晚上8:51 #

    你好 Jason,

    恭喜您所做的所有出色工作,我想问您
    如何知道所有 epoch 的平均训练时间和验证时间?

    • Jason Brownlee 2020年4月27日上午5:34 #

      您可以推断出一个 epoch 的时间来计算您想训练的 epoch 数。

  375. Jason Chia 2020年4月28日下午2:41 #

    嗨,Jason,
    我刚接触深度学习。我明白您使用 model.fit 来拟合数据,使用 model.predict 来预测类变量 y 的值。但是,是否也可以提取参数估计并推导出 f(X) = y(类似于回归)?

    • Jason Brownlee 2020年4月29日上午6:15 #

      也许对于小型模型可以,但对于数千个系数来说会很混乱。该模型是一个复杂的电路。

  376. Dina 2020年4月28日 下午4:34 #

    你好 Jason,你是否知道如何预测价格或价值范围?

  377. Hume 2020年5月5日 上午10:54 #

    感谢您的解释,我是一名机器学习和 python 初学者。您能帮助我获取预测乙型肝炎病毒的精确 CSV 数据文件吗?

  378. Ababou Nabil 2020年5月12日 下午2:01 #

    768/768 [==============================] – 2s 3ms/step
    Accuracy: 76.56

  379. MAHESH MADHUSHAN 2020年5月24日 上午11:29 #

    为什么你不进行数据标准化?有必要吗?我看过一些教程,他们使用“from sklearn.preprocessing import StandardScaler”对数据进行标准化以获得通用比例。这种方法和你使用的方法有什么区别?

    • Jason Brownlee 2020年5月25日 上午5:43 #

      标准化或标准化输入数据可能有助于某些算法。也许可以试试看。

  380. Henry Levkine 2020年5月26日 上午7:49 #

    Jason,

    你是最棒的!

    您的程序的名称是“helloDL.py”

    我相信您未来的书籍《你好深度学习》将成为市场上最受欢迎的书籍。

    人们需要程序

    helloClassification.py
    helloRegression.py
    helloHelloPrediction.py
    helloDogsCats.py
    helloFaces.py

    等等!

    感谢您的辛勤工作!

    • Jason Brownlee 2020年5月26日 下午1:19 #

      谢谢。

      您可以在博客上找到所有这些,请使用搜索功能。

  381. Thijs 2020年6月12日 上午12:46 #

    你好,

    是否有办法访问最后一个 epoch 的准确性?如果有,我该如何访问并保存它?

    诚挚的问候

  382. Krishan 2020年6月16日 上午11:08 #

    准确率:82.42
    epoch=1500
    batch_size=1

    我不知道我做的是否恰当。任何建议都将不胜感激。

  383. Saad 2020年6月19日 下午9:20 #

    嗨,Jason,

    非常感谢这个精彩的学习平台。

    为什么第一个隐藏层使用了 12 个神经元?其背后的标准是什么?是随机的还是有潜在的原因/计算?

    (我假设隐藏层中的神经元数量始终在输入和输出数量之间)

  384. Paras Memon 2020年7月30日 上午9:05 #

    你好 Jason,

    我的训练和测试数据集的形状是这样的
    xTrain_CN.shape, yTrain_CN.shape, xTest_CN.shape
    ((320, 56, 6251), (320,), (80, 56, 6251))

    我遇到了这个错误:ValueError: Error when checking input: expected dense_20_input to have 2 dimensions, but got array with shape (320, 56, 6251)

    以下是代码

    def nn_keras(xTrain_CN, yTrain_CN, xTest_CN)

    model = Sequential()
    model.add(Dense(12, input_dim=6251, activation=’relu’))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(1, activation=’sigmoid’))
    # 编译 Keras 模型
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    # 在数据集上拟合 Keras 模型
    model.fit(xTrain_CN, yTrain_CN, epochs=150, batch_size=10)
    # 评估 Keras 模型
    _, accuracy = model.evaluate(xTrain_CN, yTrain_CN)
    print(‘Training Accuracy: %.2f’ % (accuracy*100))

    _, accuracy = model.evaluate(xTrain_CN, yTrain_CN)
    print(‘Testing Accuracy: %.2f’ % (accuracy*100))

    nn_keras(xTrain_CN, yTrain_CN, xTest_CN)

    • Jason Brownlee 2020年7月30日 下午1:44 #

      MLP 必须在训练期间接受二维数据(行和列)作为输入,在输出时接受一维数据作为输出。

  385. Joanne 2020年8月12日 上午1:25 #

    嗨,Jason,

    这是一个很棒的教程,非常容易理解!!是否有关于如何将权重和偏置添加到我们的模型的教程?

  386. Luis Cordero 2020年8月20日 下午12:05 #

    你好,如果我有一个预测问题,是否必须将输入变量缩放到使用 sigmoid 或 relu 激活函数或您决定的任何激活函数?

  387. Luis Cordero 2020年8月20日 下午1:15 #

    我如何创建一个具有多个输出的配置,即输出层具有 2 个或更多值?

  388. Simon Suarez 2020年8月30日 上午8:27 #

    你好,Jason。

    感谢您这篇文章的卓越品质。我熟悉使用 Scikit-Learn 进行机器学习,阅读这篇文章(以及您之前关于该主题的一些文章)极大地帮助我开始构建多层感知机。
    我用 Wisconsin Diagnostic Breast Cancer (WDBC) 数据集测试了在这里学到的知识。我只使用了 3 个特征(半径、纹理、光滑度)和以下拓扑,在训练集上获得了约 92.965% 的准确率,在测试集上获得了 96.491% 的准确率:
    • Epochs = 250
    • Batch_size = 60
    • 激活函数 = ReLu
    • 优化器 = ‘Nadam’

    层;神经元数量;激活函数
    输入;3;无
    隐藏 1;4;ReLu
    隐藏 2;4;ReLu
    隐藏 3;2;ReLu
    输出;1;Sigmoid

    训练和测试使用以下方法分割:train_test_split(X, y, test_size=0.33, random_state=42)
    谢谢!

  389. Berns Buenaobra 2020年9月7日 上午7:32 #

    0s 833us/step – loss: 0.4607 – accuracy: 0.7773

  390. Berns Buenaobra 2020年9月7日 上午7:37 #

    第二次使用笔记本电脑 GPU 得到
    0s 958us/step – loss: 0.4119 – accuracy: 0.8216
    准确率:82.16

  391. Ahmed Nuru 2020年9月8日 下午5:01 #

    你好 Jason,如何使用预训练的深度学习模型来预测图像伪造和真实性?

  392. Fatma Zohra 2020年9月11日 上午2:30 #

    你好 Jason,

    您能指导我如何将查询和文档作为输入到我们的 NN 中吗(知道它们都由频率向量表示)?

  393. fatma zohra 2020年9月13日 上午2:41 #

    Jason博士,您好,

    非常感谢您的回复,该链接对我很有用,
    然而,由于我刚开始接触 NN,我还是有点迷茫。实际上,我想使用 NN 计算查询和文档之间的相似性。输入是(文档的 TF 向量和查询的 TF 向量,输出是相似性(0 如果不相似,1 如果相似))。我有一个 NN 的想法,但不知道从哪里开始……
    如果您能帮助我(也许是一个类似的示例代码),我将非常感激。

    等待您的回复.. 提前感谢

    • Jason Brownlee 2020年9月13日 上午6:10 #

      我认为您是在询问计算文本相似性。如果是这样,抱歉我没有关于该主题的教程。

      • fatma zohra 2020年9月13日 上午6:38 #

        是的,这就是我想要的。无论如何,非常感谢您的教程,它们非常清晰且富有成效。

  394. yibrah fisseha 2020年9月22日 下午11:41 #

    我非常感谢您的教程。您能指导我如何使用混淆矩阵参数(如召回率、精确率、F1 分数)来评估模型吗?

  395. derya 2020年9月23日 上午5:03 #

    很棒的教程,很有帮助!

  396. Sean H. Kelley 2020年9月23日 上午6:38 #

    你好 Jason,非常感谢您提供这些。

    我欣赏您在其他页面链接中提供的深入解释。

    我想知道如何保持心智状态。例如,您在运行时训练模型并获得准确性级别。如果您最终通过训练特定的配置获得了准确性级别,您如何在不重新训练的情况下保留该配置/心智状态/人工神经网络的准确性级别?

    我能否将该“心智状态”的快照保存在某处,以便当您拥有一个运行良好的模型时,您就可以使用它来处理新数据,还是我在尝试理解这个概念时仍然遗漏了一些关键要素?

    谢谢!

  397. Muhammad Asad Arshed 2020年10月10日 上午12:34 #

    很棒的博客和技术技能,您是否愿意推荐我一些其他博客?

  398. Brijesh 2020年10月10日 下午5:57 #

    我们可以只使用 CSV 文件格式吗?

    • Jason Brownlee 2020年10月11日 上午6:44 #

      不,深度学习可以使用图像、文本数据、音频数据,几乎任何可以用数字表示的东西。

  399. imene 2020年10月18日 上午4:49 #

    epoch =10000 且 batch-size = 20 时,我获得了 84% 的准确率和 loss: 0.3434

    • Jason Brownlee 2020年10月18日 上午6:12 #

      干得好!

    • YAŞAR SAİD DERDİMAN 2020年12月27日 下午4:12 #

      这很好,但您的模型的泛化误差可能很高。因为更多的 epoch 意味着更多的过拟合,因此您应该为任何深度学习训练使用更少的 epoch。

  400. imene 2020年10月18日 上午4:59 #

    首先,感谢您的精彩解释,
    我该如何保存训练好的模型以供测试使用,因为每次我尝试执行程序时,训练都会重复?
    谢谢。

  401. Fatima 2020年10月24日 上午5:18 #

    你好 Jason,我应用了深度神经网络(DNN)算法进行预测,它工作得很好。我在评估预测结果时遇到了问题,我使用了(metrics.confusion_matrix),它给了我这个错误
    ValueError: Classification metrics can’t handle a mix of binary and continuous targets

    有什么建议可以解决这个错误吗?
    注意:我的类别标签(结果变量)是二元的(0,1)

    提前感谢

  402. K Al 2020年10月27日 上午2:53 #

    首先,请允许我感谢您提供的这个精彩教程以及您的宝贵时间。
    我想问:您在同一数据集上训练和评估了网络。为什么它没有生成 100% 的准确率呢?

    谢谢

  403. Zuzana 2020年11月1日 晚上11:15 #

    你好,很棒的教程,一切都正常,只是在尝试添加预测时,我收到了以下错误消息。您能否帮忙解决?非常感谢。

    WARNING:tensorflow:From C:/Users/ZuzanaŠútová/Desktop/RTP new/3_training_deep_learning/data_PDS/keras_first_network_including_predictions.py:27: Sequential.predict_classes (from tensorflow.python.keras.engine.sequential) is deprecated and will be removed after 2021-01-01.
    Instructions for updating
    请改用:* np.argmax(model.predict(x), axis=-1),如果您的模型进行多类分类(例如,最后一层激活使用 softmax)。* (model.predict(x) > 0.5).astype("int32"),如果您的模型进行二元分类(例如,最后一层激活使用 sigmoid)。

    警告(来自警告模块)
    File “C:\Users\ZuzanaŠútová\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\keras\engine\sequential.py”, line 457
    return (proba > 0.5).astype(‘int32’)
    RuntimeWarning: invalid value encountered in greater
    回溯(最近一次调用)
    File “C:\Users\ZuzanaŠútová\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\indexes\base.py”, line 2895, in get_loc
    return self._engine.get_loc(casted_key)
    File “pandas\_libs\index.pyx”, line 70, in pandas._libs.index.IndexEngine.get_loc
    File “pandas\_libs\index.pyx”, line 101, in pandas._libs.index.IndexEngine.get_loc
    File “pandas\_libs\hashtable_class_helper.pxi”, line 1032, in pandas._libs.hashtable.Int64HashTable.get_item
    File “pandas\_libs\hashtable_class_helper.pxi”, line 1039, in pandas._libs.hashtable.Int64HashTable.get_item
    KeyError: 0

    上述异常是以下异常的直接原因

    回溯(最近一次调用)
    File “C:/Users/ZuzanaŠútová/Desktop/RTP new/3_training_deep_learning/data_PDS/keras_first_network_including_predictions.py”, line 30, in
    print(‘%s => %d (expected %d)’ % (X[i].tolist(), predictions[i], y[i]))
    File “C:\Users\ZuzanaŠútová\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\frame.py”, line 2902, in __getitem__
    indexer = self.columns.get_loc(key)
    File “C:\Users\ZuzanaŠútová\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\indexes\base.py”, line 2897, in get_loc
    raise KeyError(key) from err
    KeyError: 0

  404. Zuzana 2020年11月2日 上午6:50 #

    抱歉,但那些都没有帮助:/

  405. Julian A Epps 2020年11月3日 上午7:58 #

    我在哪里可以找到您正在使用的这些 keras 函数的文档?我不知道这些函数是如何工作的。

  406. Umair Rasool 2020年11月8日 上午4:42 #

    先生您好,我实际上不熟悉 ML,所以有人正在使用 Python 处理我的栅格数据集预测任务。他只提供最终结果和 CSV 文件,而不是作为栅格的最终预测图。您能否指导我 ML 是否像这样工作,或者他在生成最终地图时遗漏了什么?请回复。谢谢

  407. Halil 2020年11月27日 上午6:09 #

    感谢您这个精彩的教程!实际上,我厌倦了观看那些有很多枯燥的演讲和肤浅解释的视频。我发现了我的主要资源!

    顺便说一句,我猜这里有一个错误。对吗?
    rounded = [round(x[0]) for x in predictions] —> 应该是 “round(X…..”

    • Jason Brownlee 2020年11月27日 上午6:44 #

      不客气。

      有很多方法可以对数组进行四舍五入。

      • Halil 2020年11月30日 上午5:45 #

        我的意思是,“x”应该是“X”。对吗?

  408. RAJSHREE SRIVASTAVA 2020年11月28日 上午4:05 #

    你好 jason,

    希望您一切都好。我正在 Google Colab 中使用 ANN 进行图像分类。我遇到了这个错误,您能帮我找到解决方案吗?

    InvalidArgumentError: Incompatible shapes: [100,240,240,1] vs. [100,1]
    [[node gradient_tape/mean_squared_error/BroadcastGradientArgs (defined at :14) ]] [Op:__inference_train_function_11972]

    Function call stack
    train_function

    等待您的回复。

  409. RAJSHREE SRIVASTAVA 2020年11月28日 下午8:14 #

    Jason,你好,感谢你的回复。

    好的,在 Python 中,我正在处理用于图像分类的 ANN。我遇到了这个错误,你能帮我找到解决方案吗?

    InvalidArgumentError: Incompatible shapes: [100,240,240,1] vs. [100,1]
    [[node gradient_tape/mean_squared_error/BroadcastGradientArgs (defined at :14) ]] [Op:__inference_train_function_11972]

    Function call stack
    train_function

  410. Hanem 2020年12月17日 上午11:07 #

    非常感谢,这对我帮助很大。事实上,你所有的文章都很有信息量,并且是我的好向导。

  411. John Smith 2020年12月28日 上午7:58 #

    这是一个非常棒的教程,我认为可以改进的地方是增加一个实际预测的例子。

    预测部分相当简略,我不太明白如何使用“预测”这个数组来实际预测某事。

    比如,如果我想输入一些测试数据并获得预测,我该怎么做?

    我会查阅你其他有用的指南,但如果有完整的教程就更好了。

    • John Smith 2020年12月28日 上午8:07 #

      我写这个的时候还没喝咖啡。

      我现在明白了,我们是将原始变量传回模型进行预测,并打印出预测值与实际值。

      🙂

      谢谢——你做了一个很棒的教程!

      祝你圣诞快乐,新年快乐。

      • Jason Brownlee 2020年12月28日 上午8:19 #

        不客气!

        我很高兴它能帮助你开始深度学习之旅。

  412. Joe 2021年1月3日 上午5:00 #

    嗨,Jason,

    新年快乐!

    你是在用训练模型相同的 X 数据集进行预测。

    在这种情况下,我本以为模型会产生接近 100% 的准确率,因为模型经过了专门训练(甚至可能过拟合)。

    为什么我们只能得到 76.9% 的准确率,而不是接近 100%?

    谢谢
    Joe

  413. Roberto Aguirre Maturana 2021年1月7日 下午12:19 #

    极好的教程,解释得很好,而且非常容易理解。看来你需要更新一行在 2021 年已被弃用的代码

    #而不是
    #predictions = model.predict(X)

    #现在你必须使用
    predictions = (model.predict(X) > 0.5).astype(“int32”)

  414. Girish Ahire 2021年1月8日 下午8:27 #

    我得到了 65%。

  415. Tom Rauch 2021年1月15日 上午6:37 #

    你好,我在我的 VirtualEnv 中安装了这些(以及其他库)

    Keras==2.4.3
    Keras-Preprocessing==1.1.2

    但是当我运行这个时

    # 使用 Keras 教程的第一个神经网络
    from numpy import loadtxt
    来自 keras.models import Sequential
    from keras.layers import Dense

    我在 jupyter 中收到“Dead Kernel”错误消息;第一行运行正常,但在 Keras 处出现“dead kernel”消息。

    有什么办法可以解决吗?

    谢谢!

  416. Tom Rauch 2021年1月15日 上午9:32 #

    谢谢 Jason!我会尝试命令行。

    汤姆

  417. Tom Rauch 2021年1月15日 下午12:22 #

    你好 Jason,我遵循了你的指示,但仍然在 Keras 上遇到问题,也许我没有正确安装?

    (rec_engine) tom@machine:~/code$ python keras.py
    回溯(最近一次调用)
    File “keras.py”, line 3,
    来自 keras.models import Sequential
    File “/home/tom/code/keras.py”, line 3,
    来自 keras.models import Sequential
    ModuleNotFoundError: No module named ‘keras.models’; ‘keras’ is not a package

    但是当我运行这个时,我确实看到了它已安装

    (rec_engine) tom@machine:~/code$ pip list | grep Keras
    Keras 2.4.3
    Keras-Preprocessing 1.1.2

    我遵循了这个指南中的 pip install

    https://www.liquidweb.com/kb/how-to-install-keras/

    我认为我的下一步可能是为 Keras 和 TensorFlow 创建一个新的 VirtualEnv。

    谢谢,Tom

  418. Govind Kelkar 2021年1月15日 下午10:58 #

    嗨,Jason博士,

    我在 google colab 中执行了你的代码,并且它能够运行,我发现唯一的改动是在预测新数据时
    你列出的序列是 10101,而我得到的是 01010
    我还对代码做了一些修改。
    尽管如此,我的代码至少是可行的。现在我将尝试调整它以获得更高的准确率。

  419. Tom Rauch 2021年1月16日 上午9:18 #

    你好 Jason,我创建了一个新的虚拟环境并加载了 Keras、TensorFlow 等,然后创建了一个包含你所有代码的 .py 文件,然后在包含 csv 和 py 的目录中从命令行运行它。

    但是,我遇到了这个错误

    (ML) tom@machine:~/code$ python mykerasloader.py
    非法指令(核心转储)

    是否有我应该使用的 logger 来查看更多详细信息?

    谢谢,Tom

    • Jason Brownlee 2021年1月16日 下午1:20 #

      这看起来不太好,我怀疑是你的环境出了问题。

      也许你可以尝试在 stackoverflow.com 上发布/搜索。

  420. Francisco Santiago 2021年1月17日 上午9:51 #

    正在创建神经网络
    24/24 [==============================] – 0s 756us/step – loss: 0.3391 – accuracy: 0.8503
    准确率:85.03

    太棒了!!

  421. Jeremy 2021年1月17日 下午4:38 #

    Brownlee 博士,

    早上好,先生!我想问一个问题:运行算法,比如说 50 次并平均准确率是否有价值?我以前使用过这种技术,效果很好,但由于我对它还比较陌生,所以如果有经验丰富的机器老师指导我一下会很有帮助。

    如果这是你认为有用的东西,我还有一个问题,这源于我对事物的有限理解:我会在哪里开始‘for’循环?我的第一个想法是在‘model = Sequential()’之前开始,但这会每次重新定义 NN 结构,这没什么意义。第二个想法是在‘model.fit()’之前开始,在这种情况下,模型保持不变,损失函数和优化函数也保持不变。

    非常感谢你的时间!

    此致,
    Jeremy

  422. Tom Rauch 2021年1月18日 上午6:33 #

    Jason,有没有关于在此帖子中使用你的代码在 Google Colab 中的教程?我不知道如何使用 Colab 指向 csv。

    谢谢,Tom

  423. Anna 2021年1月21日 上午8:53 #

    你好 Jason,我有一个问题。

    我想创建一个模型来预测城市发展。我从你上面的模型开始。
    我使用城市和非城市点的 4 年(2000、2006、2012、2018)的信息。我还使用了坡度信息和每个点的距离信息。
    我创建了一个包含以下列信息的数据集。
    2000-2006
    2006-2012

    训练后,我获得了 94% 的准确率
    但是当我将 2006 年输入模型时,它无法很好地预测 2012 年。有很多问题。
    我以为有了这个准确率,模型应该能很好地预测 2012 年。

    我不知道问题可能出在哪里……在训练部分、预测部分还是其他地方??
    请告诉我你的看法,因为我被这个问题困住了几周,需要尽快找到解决方案!!!!

  424. James Parker 2021年1月22日 下午8:43 #

    感谢这篇很棒的文章,但我想问一下,accuracy 前面的 _ 是什么意思?
    我在网上搜索了,但没找到。

    • Jason Brownlee 2021年1月23日 上午7:04 #

      我们在 Python 中使用下划线 (_) 来丢弃我们不关心的返回值或变量。在这种情况下是 loss,因为我们只关心 accuracy。

  425. FOGANG FOKOA 2021年1月24日 下午12:43 #

    你好,

    将一个形状为 (50385, ) 的数组输入到 MLP 中,其中每个数组都是一个形状为 (x, 127) 的数组

    我想将一个 numpy 2D 数组输入到 MLP 中,但我有一个包含 50395 行的数组,其中包含许多形状为 `(x, 129)` 的 2D 数组。`x` 是因为有些矩阵的行数不同。以下是一个例子:

    train[‘spec’].shape
    >>(50395,)
    train[‘spec’][0].shape
    >>(41, 129)
    train[‘spec’][5].shape
    >>(71, 129)

    这是我的代码片段:

    X_train = train[‘spec’].values; X_valid = valid[‘spec’].values
    y_train = train[‘label’].values; y_valid = valid[‘label’].values
    model.add(Dense(12, input_shape=(50395, ), activation=’relu’));
    model.fit(X_train, y_train, validation_data=(X_valid, y_valid), epochs=500, batch_size=1);

    我在最后一行(model.fit)遇到了这个错误:
    ValueError: Error when checking input: expected dense_54_input to have shape (50395,) but got array with shape (1,)

    如何解决这个问题,以便网络可以接受形状为 `(x, 129)` 的所有 50395 个矩阵作为输入?

  426. FOGANG FOKOA 2021年1月28日 上午12:56 #

    我按照你说的做了。然后我克服了这个困难!现在我的代码看起来像这样:

    model = Sequential();

    model.add(Dense(units =8, input_shape=(71, 129), activation=’relu’));
    model.add(Dense(units=8, activation=’relu’));
    model.add(Dense(units=11, activation=’sigmoid’));

    # 编译模型
    model.compile(loss=’categorical_crossentropy’, optimizer=’sgd’, metrics=[‘accuracy’]);
    #model = mpl_model();
    X_train = list(train_df[‘spec’]); X_valid = list(valid_df[‘spec’]);
    y_train = train_df[‘label’]; y_valid = valid_df[‘label’];

    #labels = [‘yes’, ‘no’, ‘up’, ‘down’, ‘left’,’right’, ‘on’, ‘off’, ‘stop’, ‘go’];
    encoder = LabelEncoder();
    encoder.fit(y_train);
    encoded_y_train = encoder.transform(y_train);

    dummy_y_train = to_categorical(encoded_y_train);

    # Fit model , validation_data=(np.array(X_valid), y_valid)
    model.fit(np.array(X_train), np.array(list(dummy_y_train)), epochs=50, batch_size=50);

    然后我收到了这个错误:

    ValueError: A target array with shape (50395, 11) was passed for an output of shape (None, 71, 11) while using as loss categorical_crossentropy. This loss expects targets to have the same shape as the output.

    • Jason Brownlee 2021年1月28日 上午6:01 #

      哎呀,看起来数据的形状与模型的预期不符。

      也许可以关注准备好的数据,并在每次更改后检查它——先弄清楚数据,然后再关注建模部分。

      • FOGANG FOKOA 2021年1月29日 上午7:28 #

        好的。已经完成了,并且运行良好。谢谢!

  427. Kinson VERNET 2021年1月29日 上午1:06 #

    你好,谢谢这个教程。

    100 次迭代我得到了 76.82 的准确率分数。

  428. Kamal 2021年1月30日 下午12:14 #

    这是一个很棒的教程,可以实现你在 Python 中的第一个深度神经网络。谢谢你,亲爱的 Jason Brownlee。

  429. Rob 2021年2月18日 下午1:59 #

    你好,
    我目前卡在拟合模型。我唯一做的不一样的地方是使用 read_csv,这样我就不必把任何东西放到本地。但我已经验证了 X/y 的输出是相同的。

    我的错误是:

    ValueError: logits and labels must have the same shape ((None, 11) vs (None, 1))

  430. Sofia 2021年2月24日 上午3:53 #

    又一个很棒的教程!!

    当我运行程序时,它崩溃并出现如下错误:

    2021-02-23 18:50:50.497125: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library ‘cudart64_101.dll’; dlerror: cudart64_101.dll not found
    2021-02-23 18:50:50.498601: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
    回溯(最近一次调用)
    File “C:/Users/USER/PycharmProjects/Sofia/main.py”, line 26, in
    X = dataset[:,0:8]
    File “C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py”, line 3024, in __getitem__
    indexer = self.columns.get_loc(key)
    File “C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\indexes\base.py”, line 3080, in get_loc
    return self._engine.get_loc(casted_key)
    File “pandas\_libs\index.pyx”, line 70, in pandas._libs.index.IndexEngine.get_loc
    File “pandas\_libs\index.pyx”, line 75, in pandas._libs.index.IndexEngine.get_loc
    TypeError: ‘(slice(None, None, None), slice(0, 8, None))’ is an invalid key

    我该如何修复这个错误?预先感谢!

  431. Slava 2021年2月27日 上午3:46 #

    看起来 model.predict_classes() 在 2021-01-01 被弃用了。
    祝好,
    Slava

  432. Mitchell 2021年3月11日 上午8:16 #

    Jason,我对层以及它们如何选择滤波器有几个问题。

    model = Sequential()
    model.add(Dense(12, input_dim=8, activation=’relu’))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(1, activation=’sigmoid’)

    1) 上述每层的滤波器尺寸是多少?3x3 还是 7x7。
    2) 有没有预定义的 3x3 滤波器、7x7 滤波器?
    3) 在隐藏层中,滤波器通常用于产生下一层。模型如何选择滤波器?例如,如果一层有 16 个节点,我如何选择 32 个滤波器,以便下一层有 32 个节点(神经元)?

    当你创建一个模型时,是否需要为每一层指定所需的滤波器?例如滤波器的大小和数量。

    谢谢!

  433. marineboy 2021年3月12日 下午8:22 #

    你好,杰森
    我有一个问题!你能帮我吗?

    当我 predict_classes(Z) 时(Z=[100,100,100,100,100,100,100,100]),如你所见,这些数据差异很大,但输出仍然是 0 或 1。我想要输出 = “不知道标签” :((((( 我该怎么做,请帮帮我。

    非常感谢您,先生。

    • Jason Brownlee 2021年3月13日 上午5:29 #

      抱歉,我没明白。

      也许你可以重新表述一下你的问题?

  434. Franklin 2021年3月17日 下午3:00 #

    这是一个很棒的博客。继续保持良好的工作。

  435. Hamza 2021年3月19日 上午12:38 #

    准确率:79.53

  436. Oriyomi Raheem 2021年3月20日 上午6:06 #

    我正在尝试在 las 文件中训练渗透率数据,然后进行预测。请帮忙。

  437. Bangash 李忠勇 2021年3月31日 下午6:41 #

    accuracy: 0.7865
    准确率:78.65

  438. Pankaj 2021年4月23日 上午7:19 #

    对于分类特征,我如何防止 Keras 模型对训练集中未见过的测试样本进行预测,而是使用另一个模型或抛出异常?

    • Jason Brownlee 2021年4月24日 上午5:13 #

      抱歉,我不明白。也许您可以详细说明?

  439. Luca 2021年4月26日晚上8:31 #

    您创造和提供的所有内容都非常棒。
    信息量大,非常及时,而且清晰明了。

    谢谢!

  440. Ronald Ssebadduka 2021年5月5日晚上4:53 #

    File “/Users/ronaldssebadduka/PycharmProjects/pythonProject1/venv/lib/python3.9/site-packages/numpy/lib/npyio.py”, line 1067, in read_data
    items = [conv(val) for (conv, val) in zip(converters, vals)]
    File “/Users/ronaldssebadduka/PycharmProjects/pythonProject1/venv/lib/python3.9/site-packages/numpy/lib/npyio.py”, line 1067, in
    items = [conv(val) for (conv, val) in zip(converters, vals)]
    File “/Users/ronaldssebadduka/PycharmProjects/pythonProject1/venv/lib/python3.9/site-packages/numpy/lib/npyio.py”, line 763, in floatconv
    return float(x)
    ValueError: could not convert string to float: ‘\ufeff”6’

    运行您的代码时,我遇到了这个错误!
    我该如何解决?

  441. Shilpa 2021年5月28日凌晨4:43 #

    内容解释得很简单,也很清楚。谢谢Jason

  442. Toni Nehme 2021年5月28日晚上7:56 #

    请您务必帮我构建一个多层感知机,用于回归问题。谢谢!

  443. James Mayr 2021年5月29日晚上11:02 #

    非常感谢您的教程!我在输入层上遇到了困难,Keras的帮助文档也没有帮助。但您的解释给了我启发,一切都变得清晰明了!非常棒,谢谢!

  444. Meenakshi 2021年6月3日晚上8:28 #

    干得漂亮,先生。复杂事物的简单、详细的解释。
    我想学习神经网络在DDoS攻击检测方面的建模。请给出建议。
    先谢谢了。

  445. Meenakshi 2021年6月5日晚上11:34 #

    非常感谢。我会看看的,先生。

  446. JC 2021年6月24日凌晨4:13 #

    以下是我在我8GB内存64位Windows 10平台上连续执行前10次的输出结果

    Accuracy: 65.49
    Accuracy: 70.70
    Accuracy: 75.91
    Accuracy: 76.04
    Accuracy: 78.26
    Accuracy: 76.04
    Accuracy: 77.86
    Accuracy: 79.17
    Accuracy: 78.52
    Accuracy: 78.91

    我的电脑没有GPU。脚本给出了一些警告信息。其中一条是:“None of the MLIR Optimization Passes are enabled (registered 2)”

  447. Sneha 2021年7月2日凌晨8:31 #

    你好,

    我有一个关于输入量的问题。我正在尝试为分类模型拟合一个神经网络。然而,我模型中的特征是分类的,所以我需要进行独热编码。例如,如果一个分类变量有3个值,并且我对其进行独热编码,那么‘input_dim’会是1还是3?

    • Jason Brownlee 2021年7月3日凌晨6:05 #

      是的,分类变量需要进行编码。

      当使用独热编码时,3个类别将变成3个二元输入变量。

  448. Rohan 2021年7月3日凌晨10:15 #

    我的结果
    Accuracy:75.78
    Accuracy:78.26
    Accuracy:76.30
    Accuracy:77.47
    Accuracy:77.47

  449. Patrick 2021年7月10日晚上8:32 #

    嗨,Jason,

    感谢您提供的所有内容。对于初次接触Keras和机器学习的人来说,都非常有启发性。如果您能就我正在尝试解决的以下问题提供任何指导/见解,我将不胜感激。

    我正在尝试复制一个类似的球预测模型,正如这里讨论的:

    https://towardsdatascience.com/predicting-t20-cricket-matches-with-a-ball-simulation-model-1e9cae5dea22

    这是一个多分类问题(感谢您关于此的文章)。我有8个输出需要预测(0, 1, 2, 3, 4, 6, Wide, Wicket),在我的数据集中是H列(https://i.stack.imgur.com/DmTNb.png)。

    这个数据集是许多板球比赛的逐球(比赛)数据。A-G列是输入变量,应该用于预测每个结果(局、回合、击球手、投球手等)的概率。

    模型

    X = my_data[:,0:7]
    y = my_data[:,7]

    model = Sequential()
    model.add(Dense(12, input_dim=7, activation=’relu’))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(1, activation=’sigmoid’))

    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    model.fit(X, y, epochs=150, batch_size=10, verbose=0)
    _, accuracy = model.evaluate(X, y, verbose=0)
    print(‘Accuracy: %.2f’ % (accuracy*100))

    在逐球数据集上运行上述模型可以得到30%的准确率。正如文章所建议的,我想包含更多数据,即每个击球手和投球手达到每个结果的历史概率。

    这意味着我有3个数据集应该用来影响每个结果的概率。

    我应该如何以及何时尝试引入这3个链接的数据集?我想让模型同时考虑所有这些信息,而不是孤立地考虑。

    这是不是意味着要尝试将击球手/投球手数据集合并到比赛数据中?我唯一担心的是,比赛数据大约有200,000行,而球员数据库大约有500行。

    也许我错了,我应该单独运行多个数据集通过模型,然后以某种方式汇总结果——这是否可能?尽管我认为这可能不值得/不值得

    如果您对如何改进上述方法或实现预期结果有任何建议,我将非常感激。

    再次感谢您在维护一个很棒的数据科学网站方面所做的辛勤工作。

  450. Jolene Wang 2021年7月23日凌晨5:08 #

    嗨,Jason!

    感谢您提供所有这些内容。我正在尝试通过使用我自己的csv文件来复制这个模型,但是它包含许多NaN,因此无法通过loadtxt()函数加载。由于0在我的数据集中是一个非常重要的数字,我不能将我的NA替换为0。我该怎么办?

    再次感谢您的所有帮助。

  451. Jolene Wang 2021年7月23日凌晨5:13 #

    我忘了提,但有没有办法保留NaN并让模型将其读取为缺失值?将NaN分配一个特定值对我来说会很困难,因为它可能会弄乱数据集。

    • Jason Brownlee 2021年7月23日凌晨6:04 #

      不可以。NaN会使ML模型(包括神经网络)中的所有计算都失败。

  452. Isiyaku Saleh 2021年7月31日凌晨10:09 #

    非常感谢Jason博士,本教程对我帮助很大。

  453. Tim Papa 2021年8月3日晚上8:02 #

    本教程构建了一个神经网络,但这个神经网络具体是什么?它是ANN、CNN还是RNN?

    • Jason Brownlee 2021年8月4日凌晨5:13 #

      它是一个多层感知机(MLP),这是一种前馈神经网络。它不是CNN或RNN。

  454. Edwin Brown 2021年8月13日凌晨7:26 #

    首先,非常感谢Jason Brownlee让我开始了我的第一个深度学习项目。我一步一步地跟着做,但卡住了好一阵子;然而,经过无数小时的研究,我发现我的代码在Python 3.8.10、Tensorflow 2.5.0、IPython 7.26.0和Keras 2.6.0的环境下可以工作。如果我注释过多,我很抱歉,我在阅读Jason的源代码和注释时一直在做笔记。我使用了Anaconda-Spyder,并且想在Jupyter Notebook中也看到结果。希望这对您有帮助

    import sys
    import tensorflow as tf
    from tensorflow import keras
    from numpy import loadtxt
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense

    # 加载数据并分割X(输入)和y(输出)变量
    # 确保您的数据与项目在同一位置
    dataset = loadtxt(r’pima-indians-diabetes.csv’, delimiter=’,’)
    X = dataset[:,0:8]
    y = dataset[:,8]

    # 创建我们的顺序模型

    # input_dim 设置输入变量数量的参数
    # 这个结构有三个层
    # 全连接层由dense类定义
    # 有关dense类更多信息,请查看Keras主页
    # 第一层和第二层使用ReLU,输出层(第三层)使用Sigmoid函数
    # 默认阈值为0.5,ReLU性能更好
    # ReLU衡量输出在0到1之间,如概率所示
    # 模型期望的输入数据行有8个变量(input_dim=8参数)
    # 第一个隐藏层有12个节点,使用relu激活函数。
    # 第二个隐藏层有8个节点,使用relu激活函数。
    # 输出层有1个节点,使用sigmoid激活函数。

    model = Sequential()

    model.add(Dense(12, input_dim=8, kernel_initializer=’normal’, activation=’relu’))
    model.add(Dense(8, kernel_initializer=’normal’, activation=’relu’))
    model.add(Dense(1, kernel_initializer=’normal’, activation=’sigmoid’))

    # Compile the model

    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

    # 在数据集上拟合模型

    # Epoch:通过训练数据集中所有行的单次迭代。
    # Batch:在每个epoch中,模型考虑的一个或多个样本,然后更新权重。
    # CPU或GPU处理这些,通常,较大的数据集需要GPU

    model.fit(X, y, epochs=150, batch_size=10, verbose=0)

    # 评估数据

    _, accuracy = model.evaluate(X, y, verbose=0)
    print(‘Accuracy: %.2f’ % (accuracy*100))

    # 使用模型进行概率预测
    predictions = model.predict(X)
    # 四舍五入预测结果
    rounded = [round(x[0]) for x in predictions]

    • Adrian Tam
      Adrian Tam 2021年8月14日凌晨2:33 #

      做得好!

  455. Bonjour20 2021年8月15日晚上9:43 #

    我使用的是Windows系统笔记本电脑,我不知道我是否应该安装Linux发行版。> 我不确定在哪里下载数据集。> 他提到:“与python安装在同一个地方”,这是什么意思?
    对于像我这样没有技术背景的初学者来说,这简直是个谜。

    • Adrian Tam
      Adrian Tam 2021年8月17日凌晨7:30 #

      通常这意味着您只需要将数据文件和Python代码文件放在同一个文件夹下。

  456. sama samaan 2021年8月30日凌晨6:19 #

    你好
    感谢这个很棒的教程🙂

    问题1:我们可以在Apache Spark中应用深度学习吗?

    问题2:我有以下数据集 https://www.kaggle.com/leandroecomp/sdn-traffic
    我尝试了多类分类代码,但它停止工作了。这可能是什么原因?

    谢谢

    • Adrian Tam
      Adrian Tam 2021年9月1日凌晨7:39 #

      (1) 是的 (2) 具体是什么停止工作了?

  457. MALAVIKA 2021年9月23日晚上11:17 #

    首先,我被评论的数量和作者及时的回复所淹没。您真是许多人的救星,Jason。

    现在,我有一个疑问。我一直在寻找一个简单的前馈反向传播ANN代码在python中,我只看到了前馈神经网络。在您的示例中,是否发生了反向传播?ANN是否默认意味着这两个过程?

    我们通常不应该在ANN中应用反向传播吗?

    • Adrian Tam
      Adrian Tam 2021年9月24日凌晨4:41 #

      当你给ANN输入数据时,会发生前馈。当你计算梯度并更新每个神经元的权重时,会发生反向传播。

  458. MALAVIKA 2021年9月24日晚上5:06 #

    所以,我认为(反向传播)在上面的教程中没有发生。您能展示一下如何在python中编写反向传播代码,或者指导我去看相关的帖子吗?

    谢谢。

  459. Elham 2021年10月8日凌晨1:11 #

    嗨,非常感谢您提供的这个精彩教程。我正在使用tensorflow版本2.6,并在使用以下代码行进行类预测时:

    predict_x = model.predict(X)
    classes_x = np.argmax(predict_x,axis=1)
    for i in range(5)
    print(‘%s => %d (expected %d)’ % (X[i].tolist(), classes_x[i], y[i]))

    输出是

    [6.0, 148.0, 72.0, 35.0, 0.0, 33.6, 0.627, 50.0] => 0 (expected 1)
    [1.0, 85.0, 66.0, 29.0, 0.0, 26.6, 0.351, 31.0] => 0 (expected 0)
    [8.0, 183.0, 64.0, 0.0, 0.0, 23.3, 0.672, 32.0] => 0 (expected 1)
    [1.0, 89.0, 66.0, 23.0, 94.0, 28.1, 0.167, 21.0] => 0 (expected 0)
    [0.0, 137.0, 40.0, 35.0, 168.0, 43.1, 2.288, 33.0] => 0 (expected 1)

    为什么所有的classes_x都是零?

    • Adrian Tam
      Adrian Tam 2021年10月13日凌晨5:09 #

      因为这里的预测是二元的,所以predict_x是Nx1矩阵,argmax只会报告0。您的语法对于多类来说是正确的,在这种情况下,神经网络的输出层是Dense(n),其中n>1。

      我已经更新了这里的示例代码以反映您应该执行的操作。感谢您的提醒。

  460. christoper 2021年10月17日凌晨6:41 #

    你好,这很有帮助。我正在学习神经网络,我只是一个初学者。你说这是MLP类型的神经网络,对吧?我想问一下,这个呢?这里使用了什么样的神经网络架构?是RNN吗?ANN?还是LTSTM?链接如下

    https://towardsdatascience.com/how-to-create-a-chatbot-with-python-deep-learning-in-less-than-an-hour-56a063bdfc44

    • Adrian Tam
      Adrian Tam 2021年10月20日凌晨8:52 #

      MLP = 多层感知机,通常指拥有3层或更多层的神经网络。您提供的链接使用了Dense(),这是全连接层。因此,它也是MLP。

  461. Flo 2021年10月25日晚上11:29 #

    嗨Jason和Adrian,我偶然发现了您非常好的教程,因为我有一个类似的问题。

    我有一个工程问题的几个数值过程参数(与您的教程中的输入参数类似),我想将其与一个结果值进行比较(这与您的教程不同,又是一个数值,而不是分类)。您能告诉我(或者您是否知道一个像这样的合适教程),我需要如何修改代码?

    非常感谢!

    • Adrian Tam
      Adrian Tam 2021年10月27日凌晨2:23 #

      在我看来,这是一个回归问题而不是分类问题。在这种情况下,您可以考虑更改两件事:

      1.最后的Dense()层,您可能想要一个不同的激活函数(例如,线性?)因为sigmoid的输出被限制在0到1之间。
      2. model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])应该更改损失和度量。例如,您可以考虑使用MSE,因为交叉熵和准确率是分类特有的度量。

  462. Dr Shazia Saqib 2021年10月28日凌晨3:14 #

    太棒了,服务周到,非常有帮助,我正在分享给我的学生们,愿主保佑您,阿门

  463. veejay 2021年11月5日晚上11:23 #

    很棒的教程,非常详细。但我有一个问题,

    如何提高验证损失和验证准确率?我是神经网络的新手。我只触及了它的表面。权重、偏置、激活函数、损失函数、架构以及如何在keras中构建层以及其他基本术语(感谢您和YouTube上的deeplizard教程)。我正在学习和练习它,我想尝试复制一些项目,我偶然发现了这个教程,来自Dataflair,他正在创建一个聊天机器人,我试着模仿它。链接:https://data-flair.training/blogs/python-chatbot-project/
    根据我的观察和我的学习,他创建的模型是ANN-MLP。我的问题是,当我训练模型并设置validation_split = 0.3时,训练损失和准确率都很好,但验证损失和准确率却相反。我知道这可能是过拟合问题,所以……
    我所做的是:
    -添加了L2正则化
    -减慢了学习率,我也尝试加速它
    -Dropout(0.2-0.5)
    -Batch Size
    -移除层
    -添加层
    -尝试了不同的激活函数和损失函数(sigmoid, softplus, binary_crossentropy)
    -我甚至尝试向我的数据集添加数据(从320到796个输入)
    我尝试了所有这些,但val_loss和val_acc仍然很高和低。

    (我做得最好的结果是:loss: 0.1/accuracy 98%,val loss: 1.9/val_accuracy: 52%。

    而最糟糕的是val_loss:超过3.0,val_accuracy:35-40%。)

    我使用的数据集来自dataflair,但我对其进行了扩展。这是我的可视化模型:https://i.stack.imgur.com/HE1jU.png

    • Adrian Tam
      Adrian Tam 2021年11月7日凌晨10:35 #

      我真的说不清哪里出错了。您在训练时验证了验证损失吗?起初,训练损失和验证损失应该同样糟糕。它们在每个训练epoch中是如何进展的?这可能会给您一些线索。

  464. Veejay 2021年11月9日凌晨6:54 #

    是的,我都训练和验证了。它们一开始都很糟糕,随着训练的进行,损失得到了很大的改善,但val_loss和val_accuracy只改善了一点点。T_T

    • Adrian Tam
      Adrian Tam 2021年11月14日晚上1:36 #

      这是正常的。您的模型关注了训练损失并试图改进自身,但它无法看到验证数据,因此改进起来更难、更慢。

  465. Mak 2021年11月17日晚上6:24 #

    您的书籍帮助我极大地理解了LSTM,我在开发注意力层时遇到了麻烦,您能出一个关于使用Attention/MultiheadAttention的教程吗?
    谢谢你。

  466. Nikhil Gupta 2021年11月25日晚上5:47 #

    对于这个数据集,ANN的准确率在70-78%之间。使用逻辑回归,我们对同一数据集的准确率为78%。那么,使用ANN有什么优势呢?

    • Adrian Tam
      Adrian Tam 2021年11月26日凌晨2:09 #

      ANN更加灵活。奥卡姆剃刀原则——你使用最简单的模型来完成工作。如果逻辑回归拟合得很好,你没有理由使用ANN。它占用更多内存,运行速度更慢。

  467. Flo 2021年12月3日晚上8:38 #

    感谢教程

    我尝试了您的方法,并且在我的数据上运行得很好。作为第一次尝试,我只使用了过程结束后的测量数据(例如,过程时间、过程中的温差等)。为了进一步深入研究,我想使用测量数据曲线,例如过程本身的温度随时间的变化。通过使用这些曲线,我期望获得更高的信息量。

    您能否提示一下如何处理这些数据?作为第一次尝试,我简单地生成了一个表格,其中前6列是我的过程参数,第7列是我的输出值,可以轻松地输入到模型中。

    非常感谢!

    • Adrian Tam
      Adrian Tam 2021年12月8日凌晨6:59 #

      一切听起来都很直接。您尝试过实现它吗?有错误吗?

  468. Flo 2021年12月10日晚上6:32 #

    说实话,我不知道如何提供数据。在第一种情况下,我有一个包含7列的表格:6个输入过程参数和1列输出值。

    现在我想用时间记录的数据曲线替换(或添加)一些输入列,例如,第一列是时间戳,第二列是时间相关的过程参数。我该如何处理?

    • Adrian Tam
      Adrian Tam 2021年12月15日凌晨5:38 #

      通常我会使用pandas来处理数据并将其转换为numpy数组,然后再输入到Keras模型中。Pandas可以更方便地处理表格。

  469. Rick 2021年12月28日凌晨7:46 #

    可能需要调整导入设置以兼容较新版本的Tensorflow。

    而不是

    来自 keras.models import Sequential
    from keras.layers import Dense

    使用

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense

    使用Conda解决了我的问题。

    感谢您提供的出色教程和文章!!

    • James Carmichael 2021年12月29日晚上11:44 #

      感谢您的反馈Rick!我也经常尝试在Anaconda和Google Colab中运行代码,以识别和纠正兼容性问题。

  470. Preeti 2022年2月10日晚上4:18 #

    我的准确率:76.95

    感谢您的代码和详细的解释

    • James Carmichael 2022年2月11日凌晨8:35 #

      不客气,Preeti!继续加油!

  471. Alan 2022年3月9日晚上8:46 #

    你好 James

    干得好

    不用说神经网络,这让我陷入了深入的思考。

    我正在Thonny上,在64位OS的pi 400上运行您的教程。

    在这台机器上运行效果相当好。

    然而,在您提供的一个示例中遇到了错误……使用‘ pima-indians-diabetes.csv’的Keras神经网络

    “from tensorflow.python.eager.context import get_config”
    ImportError: cannot import name ‘get_config’ from ‘tensorflow.python.eager.context’ (/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/context.py)”

    因此,我发现错误在于Keras.models和layers,并已按照以下方式修改了代码:

    # 使用 Keras 教程的第一个神经网络
    from numpy import loadtxt
    from tensorflow.keras import models,layers #********************
    #from keras.models import Sequential #******************

    #from keras.layers import Dense #********************
    # 加载数据集
    dataset = loadtxt(‘/home/pi/Documents/pima-indians-diabetes.csv’, delimiter=’,’)
    # 分割为输入 (X) 和输出 (y) 变量
    X = dataset[:,0:8]
    y = dataset[:,8]
    # 定义 Keras 模型
    model = models.Sequential() #********************
    model.add(layers.Dense(12, input_dim=8, activation=’relu’)) #********************
    model.add(layers.Dense(8, activation=’relu’)) #********************
    model.add(layers.Dense(1, activation=’sigmoid’)) #********************
    # 编译 Keras 模型
    model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
    # 在数据集上拟合 Keras 模型
    model.fit(X, y, epochs=150, batch_size=10)
    # 评估 Keras 模型
    _, accuracy = model.evaluate(X, y)
    print(‘Accuracy: %.2f’ % (accuracy*100))

    现在这产生了
    准确率:74.35

    • James Carmichael 2022年3月10日 上午10:37 #

      嗨 Alan……谢谢你的反馈和支持!将其应用于Raspberry Pi很有趣!请记住,我们的实现可能与为该平台开发的库不完全兼容。继续保持出色的工作!

  472. Nishanth 2022年3月14日 上午3:38 #

    你好,

    精彩教程!简单易懂。我尝试了在我的数据集上做同样的事情,但是最后的for循环似乎不起作用。您能帮我解决吗?

    这是for循环
    for i in range(5)
    print(‘%s => %d (expected %d)’ % (X[i].tolist(), predictions[i], y[i]))

    谢谢

    • James Carmichael 2022年3月14日 上午11:48 #

      嗨 Nishanth……你是复制粘贴代码还是自己输入的?请注意复制粘贴代码以及它如何影响代码布局,因为错误可能很难在视觉上发现。

  473. Nishanth 2022年3月14日 上午3:40 #

    嗨,在评论中,print语句看起来没有缩进,但在我的代码中,我缩进了它,但它仍然不起作用。

    • James Carmichael 2022年3月14日 上午11:52 #

      嗨 Nishanth……请参阅之前的回复。

  474. Nishanth 2022年3月14日 上午3:45 #

    你好,

    精彩教程!简单易懂。我在我的数据集上尝试了它,但最后的for循环,即打印前5个示例的for循环不起作用。它给了我KeyError: 0

    你能帮我解决吗?

    谢谢

    • James Carmichael 2022年3月14日 上午11:47 #

      嗨 Nishanth……请分享完整的错误消息,以便我们更好地帮助您。

  475. Nishanth 2022年3月14日 上午11:41 #

    找到了解决办法。问题是这里的数据集是numpy数组,而我的数据集是pandas.DataFrame。谢谢您的帮助。

    • MK 2022年11月6日 下午6:02 #

      嗨 Nishanth,

      您能否分享一下您是如何解决最后的Keyerror的?

  476. N V Raman 2022年4月2日 上午1:51 #

    你好 Jason,

    非常棒的教程

    当我运行代码时,一切都正常,除了在打印预测时出现key error。

    • James Carmichael 2022年4月2日 下午12:18 #

      嗨 N V……您能提供确切的错误消息,以便我们更好地帮助您吗?

  477. Susia 2022年4月9日 上午1:30 #

    您好,我学习了同一个教程,在您的一门迷你课程中,在Keras中开发第一个神经网络。为了在我自己的数据集上开发我的模型,我尝试改编了这个教程。问题是我的目标Y是计数数据(例如流量数据)。在这种情况下,我如何定义输出层的激活函数?是relu吗?如何选择损失函数?我尝试了MeanSquaredError,损失值很大,或者categorical_crossentropy,损失值为nan。我正在考虑订购《Python深度学习》完整版。书中内容与迷你课程有什么区别?

  478. Nasrin 2022年4月23日 上午4:32 #

    先生,非常感谢您精彩的文章
    您能否解释一下在深度学习中如何将X和y分割为训练集和测试集?
    这段代码在这里是否正确?

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

    • James Carmichael 2022年4月24日 上午3:25 #

      嗨 Nasrin……您提供的示例代码看起来是准确的。请随时实施,如果您遇到任何问题,请告知我们。

  479. Shiva Manhar 2022年4月23日 下午3:25 #

    24/24 [==============================] – 0s 489us/step – loss: 0.4517 – accuracy: 0.7956
    准确率:79.56

  480. Jack Sparrow 2022年6月3日 上午5:38 #

    使用Keras的深度学习MNIST数据集

    from cgi import test
    from pyexpat import model
    import numpy as np
    来自 keras.models import Sequential
    from keras import layers
    #from keras.layers import Convolution2D, MaxPooling2D #train on image data
    from keras.utils import np_utils #veri dönüşümü için gerekli

    from keras.datasets import mnist #image data
    (X_train, y_train), (X_test, y_test) = mnist.load_data()

    print(“Reshape öncesi”,X_train.shape)

    X_train = X_train.reshape(-1, 28, 28, 1)
    X_test = X_test.reshape(-1, 28, 28, 1)

    print(“Reshape sonrası”,X_train.shape)

    X_train = X_train.astype(‘float32’)
    X_test = X_test.astype(‘float32′)
    X_train /= 255
    X_test /= 255

    Y_train = np_utils.to_categorical(y_train)
    Y_test = np_utils.to_categorical(y_test)

    model = Sequential()

    model.add(layers.Convolution2D(32, 3, 3, activation=’relu’, input_shape=(28,28,1)))
    model.add(layers.Convolution2D(32, 3, 3, activation=’relu’))
    model.add(layers.MaxPooling2D(pool_size=(2,2)))
    model.add(layers.Dropout(0.25))

    model.add(layers.Flatten())
    model.add(layers.Dense(128, activation=’relu’))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(10, activation=’softmax’))

    model.compile(loss='categorical_crossentropy',
    optimizer='adam',
    metrics=['accuracy'])

    model.fit(X_train, Y_train,
    batch_size=32, epochs=10, verbose=1)

    test_loss, test_acc = model.evaluate(X_test, Y_test, verbose=0)
    print(“Test Loss”, test_loss)
    print(“Test Accuracy”,test_acc)

    深度学习与data_diagnosis数据集

    import imp
    from pickletools import optimize
    from random import random
    from statistics import mode
    from tabnanny import verbose
    from warnings import filters
    from matplotlib.pyplot import axis
    import pandas as pd
    import numpy as np

    dataSet = pd.read_csv(“.\data_diagnosis.csv”)
    dataSet.drop([“id”,”Unnamed: 32″],axis=1,inplace=True)

    dataSet.diagnosis = [1 if each == “M” else 0 for each in dataSet.diagnosis]
    y=dataSet.diagnosis.values
    x_data=dataSet.drop([“diagnosis”],axis=1)
    x_data.astype(“uint8”)

    from sklearn.preprocessing import StandardScaler
    scaler=StandardScaler()
    x=scaler.fit_transform(x_data)

    from keras.utils import to_categorical
    Y=to_categorical(y)

    from sklearn.model_selection import train_test_split
    trainX,testX,trainy,testy=train_test_split(x,Y,test_size=0.2,random_state=42)

    trainX=trainX.reshape(trainX.shape[0],testX.shape[1],1)
    testX=testX.reshape(testX.shape[0],testX.shape[1],1)

    from keras import layers
    from keras import Sequential

    verbose,epochs,batch_size=0,10,8
    n_features,n_outputs=trainX.shape[1],trainy.shape[1]

    model= Sequential()
    input_shape=(trainX.shape[1],1)
    model.add(layers.Conv1D(filters=8,kernel_size=5,activation=’relu’,input_shape=input_shape))
    model.add(layers.BatchNormalization())
    model.add(layers.MaxPooling1D(pool_size=3))
    model.add(layers.Conv1D(filters=16,kernel_size=5,activation=’relu’))
    model.add(layers.BatchNormalization())
    model.add(layers.MaxPooling1D(pool_size=2))
    model.add(layers.Flatten())
    model.add(layers.Dense(200,activation=’relu’))
    model.add(layers.Dense(n_outputs,activation=’softmax’))
    model.summary()
    print(‘başladı’)

    import keras
    import tensorflow
    #model.compile(loss=’categorical_crossentropy’,optimizer=’adam’,metrics=[‘accuracy’])
    model.compile(loss=’binary_crossentropy’,
    optimizer=tensorflow.keras.optimizers.Adam(),
    metrics=[‘accuracy’]) # 编译
    dataSet.info()
    model.fit(trainX,trainy,epochs=epochs,verbose=1)
    _,accuracy=model.evaluate(testX,testy,verbose=0)

    print(accuracy)

    • James Carmichael 2022年6月3日 上午9:12 #

      感谢您的反馈 Jack!继续保持出色的工作!

  481. Jack 2022年6月17日 上午5:25 #

    24/24 [==============================] – 0s 1ms/step
    [6.0, 148.0, 72.0, 35.0, 0.0, 33.6, 0.627, 50.0] => 1 (expected 1)
    [1.0, 85.0, 66.0, 29.0, 0.0, 26.6, 0.351, 31.0] => 0 (expected 0)
    [8.0, 183.0, 64.0, 0.0, 0.0, 23.3, 0.672, 32.0] => 1 (expected 1)
    [1.0, 89.0, 66.0, 23.0, 94.0, 28.1, 0.167, 21.0] => 0 (expected 0)
    [0.0, 137.0, 40.0, 35.0, 168.0, 43.1, 2.288, 33.0] => 1 (expected 1)

    我的准确率为77.99,但这里显示为100,这正确吗?

    • James Carmichael 2022年6月17日 上午9:28 #

      感谢您的反馈 Jack!

  482. Nicola Menga 2022年6月22日 下午5:53 #

    您好。
    感谢您的教程。非常有用。
    我有一个问题。这是一个用于二元分类的教程。
    但是,我想构建一个前馈神经网络,它预测多个变量(输出层中的多个神经元),这些变量的值在0到1之间(例如0.956、0.878、0.897等),与本教程中的情况不同,在本教程中,要预测的变量仅取0或1的值。
    我尝试将此教程中开发的网络应用于此目的,但结果不佳。
    我的测试数据集有257个观测值。如果我应用此网络,预测数组将由257个值组成(每个观测值一个),但这些值都相同(例如1:0.985;2:0.985;3:0.985;……;256:0.985;257:0.985)。希望我已解释清楚。

    是否有适合我的问题的Keras模型/函数(即预测一个非0或1的变量)?

    感谢您的帮助。

    Nicola Menga。

    • James Carmichael 2022年6月23日 上午10:59 #

      嗨 Nicola……请澄清和/或详细说明您的问题,以便我们更好地为您提供帮助。

  483. Sadegh 2022年7月7日 上午3:49 #

    你好,
    我在使用Anaconda的Spyder控制台中用Keras制作的NN模型时,总是收到警告。
    警告如下:

    WARNING: AutoGraph could not transform <function Model.make_test_function..test_function at 0x0000011A030555E0> and will run it as-is.
    Cause: Unable to locate the source code of <function Model.make_test_function..test_function at 0x0000011A030555E0>. Note that functions defined in certain environments, like the interactive Python shell, do not expose their source code. If that is the case, you should define them in a .py source file. If you are certain the code is graph-compatible, wrap the call using @tf.autograph.experimental.do_not_convert. Original error: lineno is out of bounds
    To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert

    如果您能帮助我解决这个问题,我将不胜感激。

  484. sukh 2022年8月12日 下午6:22 #

    你好 James Carmichael,

    感谢您的所有努力。作为一个初学者,我能够运行您的示例代码并逐行阅读代码的功能。一段非常激动人心的旅程开始了……我的问题是,我输入了不同的数据,其中第一行有12个变量输入,第12个是输出结果,但在第5列或第6列下方是什么。我该如何处理数据集中的这类输入?我的数据集在读取时出错。

    19 2 49 156 782 394 296.4 723.7 809.4 29.87 53.78 86
    740 366
    728 398
    659 161
    704 220
    795 173
    784 385
    732 282
    18 1 60 172 850 1455 794 670 28.44 80.74 90
    873
    842
    817
    749
    797
    849
    850
    847
    842

    • James Carmichael 2022年8月13日 上午6:18 #

      嗨 sukh……非常欢迎!您是否收到任何错误消息可以分享?这将使我们能更好地帮助您。

      • sukh 2022年8月13日 下午10:34 #

        好的,谢谢。实际上,我的数据文件是csv格式。我能够读取它。但在创建数组时遇到了问题。我的一个输入有多个行,而且大部分都在列下方展开。意味着数据不在一行中。每个输入都以相同的方式处理。请就如何在此类输入中创建数组提出建议。或者我是否需要将数据放在E列的一个单元格中,以使数据在一行中,最后一列K是输出结果。我的第二个输入从第411行开始。希望您能理解我的数据输入关系。下方是代码和数据。

        我的问题是……我们能否以这种方式输入数据?如果可以,我该如何声明我的数据集以进行进一步处理?

        from numpy import loadtxt
        from tensorflow.keras.models import Sequential
        from tensorflow.keras.layers import Dense
        from google.colab import files
        uploaded = files.upload()

        import csv

        # opening the CSV file
        with open(‘dataread.csv’, mode =’r’)as file

        # reading the CSV file
        csvFile = csv.reader(file)
        print(csvFile)
        # displaying the contents of the CSV file
        for lines in csvFile
        print(lines)

        19 2 49 156 782 296.4 723.7 809.4 29.87 53.78 86
        740
        728
        659
        704
        795
        784
        732
        744
        764
        777
        749
        700
        729
        722
        741
        790
        783
        736
        744
        781
        810
        745
        722
        734
        736
        750
        706
        744
        789
        851
        813
        750
        783
        786
        758
        731
        742
        708
        733
        720
        673
        689
        729
        700
        781
        786
        758
        717
        773
        802
        726
        719
        734
        707
        678
        754
        747
        715
        771
        830
        786
        751
        773
        811
        824
        820
        772
        760
        814
        735
        687
        726
        771
        733
        773
        822
        858
        806
        756
        783
        775
        776
        739
        730
        796
        775
        754
        721
        744
        764
        793
        742
        734
        774
        802
        759
        735
        744
        767
        735
        723
        691
        748
        719
        749
        846
        822
        749
        753
        825
        854
        817
        754
        737
        785
        803
        785
        746
        736
        783
        741
        737
        694
        814
        754
        761
        814
        823
        785
        733
        759
        786
        814
        763
        792
        851
        813
        795
        751
        759
        780
        760
        738
        760
        801
        767
        738
        673
        697
        673
        664
        691
        783
        821
        823
        807
        746
        775
        822
        827
        763
        732
        756
        750
        814
        766
        733
        772
        813
        792
        722
        777
        793
        813
        757
        747
        817
        805
        788
        802
        754
        772
        788
        847
        781
        749
        763
        814
        838
        748
        749
        760
        788
        720
        685
        697
        658
        684
        807
        843
        759
        730
        750
        807
        774
        748
        715
        779
        803
        818
        755
        768
        800
        787
        759
        798
        838
        843
        775
        801
        814
        750
        716
        745
        758
        779
        721
        717
        768
        744
        773
        758
        724
        730
        774
        744
        772
        733
        663
        671
        654
        762
        820
        818
        797
        770
        847
        827
        818
        751
        726
        760
        779
        804
        790
        755
        768
        820
        812
        852
        759
        787
        825
        782
        766
        746
        808
        793
        791
        745
        787
        800
        844
        733
        739
        780
        783
        739
        726
        745
        796
        800
        752
        796
        804
        813
        735
        726
        739
        699
        665
        648
        678
        779
        801
        798
        822
        772
        824
        837
        795
        739
        714
        771
        802
        761
        727
        773
        789
        917
        876
        788
        788
        810
        790
        770
        789
        787
        771
        743
        796
        848
        853
        769
        807
        817
        831
        817
        766
        817
        766
        707
        668
        702
        821
        817
        828
        799
        765
        795
        817
        798
        751
        792
        832
        831
        776
        764
        806
        811
        760
        747
        802
        823
        755
        754
        800
        823
        792
        750
        805
        818
        793
        752
        748
        741
        736
        736
        685
        749
        719
        766
        905
        857
        760
        741
        774
        815
        773
        746
        778
        846
        825
        775
        800
        819
        767
        780
        804
        896
        812
        757
        811
        819
        817
        779
        774
        791
        818
        770
        754
        771
        786
        753
        744
        793
        805
        799

        18 1 79 159 532 1182 1486 1744 51.75 83.64 76
        354
        831
        848
        466
        442
        837
        842
        401
        347
        721
        699
        945
        1001
        869
        837
        889
        935
        823
        876
        817
        821
        951
        878
        929
        799
        790
        849
        838
        822
        957
        933
        803
        767
        840
        905
        794
        710
        756
        1004
        966
        858
        809
        955
        930
        944
        820
        809
        823
        821
        905
        894
        890
        869
        856
        819
        762
        724
        695
        797
        794
        745
        894
        966
        923
        875
        896
        911
        859
        925
        863
        862
        884
        900
        827
        937
        936
        912
        932
        819
        800
        770
        1008
        921
        806
        924
        881
        848
        953
        893
        871
        926
        991
        889
        867
        913
        815
        901
        888
        815
        834
        876
        899
        849
        982
        886
        883
        867
        914
        928
        986
        868
        888
        957
        922
        895
        861
        828
        874
        834
        798
        862
        1016
        864
        904
        926
        838
        939
        924
        885
        890
        941
        897
        863
        1034
        906
        842
        866
        862
        832
        896
        913
        881
        875
        916
        914
        878
        957
        890
        793
        759
        804
        1003
        786
        868
        955
        840
        848
        938
        884
        886
        928
        889
        873
        966
        927
        913
        884
        868
        846
        900
        882
        836
        847
        910
        901
        874
        835
        870
        882
        814
        761
        857
        742
        719
        729
        947
        823
        822
        782
        914
        858
        850
        891
        1003
        836
        1034
        873
        867
        846
        799
        860
        772
        784
        787
        991
        936
        909
        1071
        1039
        1037
        1065
        966
        1022
        1023
        963
        959
        897
        870
        886
        881
        854
        943
        975
        869
        918
        900
        890
        960
        995
        853
        927
        926
        892
        970
        956
        881
        901
        997
        858
        924
        840
        852
        995
        1076
        896
        967
        942
        910
        1050
        994
        993
        1024
        915
        972
        942
        866
        866
        854
        837
        945
        955
        912
        930
        914
        927
        995
        987
        850
        838
        757
        727
        705
        744
        962
        859
        854
        919
        905
        900
        1002
        868
        858
        945
        890
        831
        863
        854
        901
        980
        917
        886
        944
        898
        977
        817
        747
        728
        777
        834
        908
        850
        792
        811
        964
        872
        834
        870
        937
        849
        910
        858
        834
        874
        936
        867
        825
        831
        891
        890
        912
        907
        938
        873
        873
        893
        891
        875
        959
        914
        872
        946
        875
        797
        888
        893
        810
        1069
        977
        925
        900
        874

        18 1 60 172 850 1455 794 670 28.44 80.74 90
        873
        842
        817
        749
        797
        849
        850
        847
        842
        809
        779
        739
        737
        746
        763
        854
        935
        911
        863
        832
        820
        775
        756
        819
        820
        810
        787
        766
        837
        843
        867
        820
        749
        726
        759
        823
        763
        761
        769
        767
        767
        736
        796
        864
        871
        833
        780
        785
        741
        697
        659
        659
        696
        794
        975
        866
        784
        820
        825
        800
        780
        752
        812
        775
        741
        709
        676
        675
        656
        674
        686
        691
        694
        714
        707
        743
        753
        741
        712
        717
        733
        730
        735
        735
        759
        750
        746
        750
        739
        775
        757
        715
        703
        730
        831
        844
        811
        749
        775
        795
        826
        819
        812
        820
        878
        925
        885
        840
        796
        794
        830
        870
        876
        863
        846
        815
        825
        919
        910
        859
        803
        795
        839
        887
        844
        813
        841
        891
        854
        836
        806
        785
        813
        855
        880
        816
        854
        886
        897
        811
        811
        847
        873
        841
        774
        735
        750
        820
        805
        824
        832
        828
        832
        916
        903
        894
        854
        817
        846
        859
        891
        891
        852
        836
        841
        840
        820
        839
        845
        871
        894
        856
        850
        869
        876
        859
        858
        812
        738
        745
        843
        860
        836
        847
        841
        845
        856
        910
        969
        953
        923
        860
        835
        821
        814
        844
        895
        936
        914
        866
        841
        824
        804
        844
        921
        935
        915
        855
        860
        884
        881
        850
        824
        821
        861
        941
        869
        825
        852
        868
        865
        854
        872
        898
        888
        868
        839
        835
        841
        822
        792
        825
        829
        806
        757
        763
        790
        868
        782
        776
        785
        729
        719
        716
        805
        761
        754
        825
        755
        724
        742
        766
        763
        743
        823
        889
        851
        825
        873
        837
        790
        813
        822
        869
        871
        824
        825
        893
        859
        881
        853
        810
        824
        835
        835
        851
        843
        806
        746
        730
        716
        753
        885
        886
        829
        795
        816
        849
        831
        870
        854
        808
        754
        783
        820
        740
        770
        787
        830
        858
        820
        805
        820
        847
        834
        855
        862
        837
        841
        824
        799
        751
        770
        773
        774
        865
        1019
        1005
        1028
        993
        939
        900
        897
        873
        829
        836
        875
        884
        916
        937
        892
        829
        812
        825
        801
        824
        1010
        924
        905
        877
        865
        968
        934
        843
        862
        846
        855
        847
        848
        825
        821
        821
        805
        814
        879
        847
        814
        766
        853
        850
        826
        780
        831
        795
        874
        845
        814
        850
        895
        886
        892
        843
        800
        819
        836
        833
        786
        832
        880
        863
        828
        836
        887
        918
        19 2 67 161 837 380.5 385.9 314.9 86
        825
        800
        745
        749
        819
        856
        818
        800
        816
        796
        747
        716
        674
        702
        776
        788
        724
        740
        768
        751
        715
        712
        722
        717
        721
        717
        747
        793
        745
        743
        776
        755
        724
        740
        750
        736
        740
        756
        761
        727
        729
        741
        764
        733
        761
        798
        765
        730
        726
        761
        779
        737
        713
        762
        781
        757
        739
        726
        737
        740
        728
        706
        720
        736
        754
        752
        766
        752
        743
        708
        717
        717
        723
        714
        718
        770
        797
        774
        774
        806
        782
        740
        734
        740
        736
        723
        751
        774
        740
        720
        720
        740
        715
        705
        728
        742
        725
        712
        753
        765
        728
        721
        743
        712
        700
        704
        734
        746
        703
        708
        727
        736
        702
        698
        730
        728
        700
        701
        731
        720
        704
        709
        730
        730
        698
        712
        716
        660
        643
        648
        656
        667
        689
        844
        881
        848
        853
        832
        794
        761
        753
        719
        721
        762
        788
        806
        830
        776
        734
        730
        746
        790
        785
        766
        771
        795
        769
        771
        735
        745
        790
        832
        823
        748
        746
        786
        788
        779
        756
        772
        761
        785
        755
        765
        795
        806
        798
        759
        793
        805
        777
        749
        774
        800
        797
        762
        773
        777
        727
        735
        772
        773
        732
        783
        810
        828
        745
        738
        735
        726
        734
        757
        756
        761
        750
        739
        755
        751
        729
        750
        760
        742
        733
        803
        829
        764
        753
        773
        756
        736
        730
        742
        758
        756
        759
        764
        777
        728
        757
        771
        759
        737
        767
        784
        765
        786
        801
        750
        744
        798
        762
        733
        760
        778
        750
        743
        774
        779
        747
        794
        780
        752
        784
        799
        752
        733
        766
        769
        727
        734
        757
        726
        713
        739
        764
        751
        712
        713
        745
        755
        717
        713
        753
        760
        736
        761
        776
        765
        733
        742
        777
        758
        714
        732
        750
        736
        724
        720
        747
        784
        763
        732
        738
        737
        723
        706
        720
        750
        753
        722
        723
        730
        733
        712
        712
        719
        733
        704
        701
        743
        765
        744
        725
        735
        725
        747
        703
        687
        686
        651
        650
        670
        709
        721
        775
        748
        730
        727
        769
        781
        750
        723
        736
        762
        740
        766
        789
        752
        726
        747
        797
        761
        746
        778
        760
        747
        777
        784
        808
        769
        773
        753
        737
        747
        775
        761
        739
        743
        760
        737
        714
        724
        739
        725
        707
        704
        740
        773
        727
        743
        761
        825
        742
        736
        756
        712
        716
        746
        737
        720
        761
        785
        744
        716
        725
        755
        728
        700
        704
        717
        740
        716
        732
        763
        756
        746
        746
        757
        750
        721
        721
        735
        769
        780
        794
        802
        815
        749
        746
        783
        791
        745
        760
        796
        761
        745
        766
        788
        742
        735
        743
        784
        750
        735
        775
        781
        751
        742

  485. sukh 2022年8月19日 下午9:38 #

    你好 James Carmichael,

    我将长数据放在此面板中,看起来不太好。我很抱歉。以后我会注意的。

    此外,我现在学习了numpy数组并理解了。

    我的问题是,我的输出结果不像您提供的程序那样是0和1。如果我的输出变量是90、110、112、……,我想通过给出输出来训练我的模型。然后我想利用输出。您能建议哪种模型适合这种类型的程序吗?

  486. J Jara 2022年10月9日 下午4:58 #

    这是一个二元分类器。如何为具有多个类的数据创建分类器?

    显然,我可以使用one-hot编码来表示类,并创建任意数量的二元分类器,但有没有更好的替代方案?

  487. El 2022年11月25日 上午12:47 #

    你好
    我无法下载数据集,它有很多数字,但我没有理解如何下载它们。

  488. sura 2022年12月10日 下午7:50 #

    我使用keras模型conv1d处理原始数据集 X_train= (142315, 23)
    Y_train = (142315,)
    我的代码

    n_timesteps = X_train.shape[1] #23

    input_layer = tensorflow.keras.layers.Input(shape=(n_timesteps,1))
    conv_layer1 = tensorflow.keras.layers.Conv1D(filters=5,
    kernel_size=7,
    activation=”relu”)(input_layer)
    max_pool1 = tensorflow.keras.layers.MaxPooling1D(pool_size=2, strides=5)(conv_layer1)

    conv_layer2 = tensorflow.keras.layers.Conv1D(filters=3,
    kernel_size=3,
    activation=”relu”)(max_pool1)
    flatten_layer = tensorflow.keras.layers.Flatten()(conv_layer2)
    dense_layer = tensorflow.keras.layers.Dense(15, activation=”relu”)(flatten_layer)
    output_layer = tensorflow.keras.layers.Dense(6, activation=”softmax”)(dense_layer)

    model = tensorflow.keras.Model(inputs=input_layer, outputs=output_layer)
    # Prints a string summary of the network.
    model.summary()

    然后我使用优化技术进行超参数优化,当# Returning the details of the best solution. 打印此错误时,可以帮助我吗?

    错误

    5121 # Use logits whenever they are available. softmax and sigmoid

    ValueError: Shapes (142315,) and (142315, 2) are incompatible

    • James Carmichael 2022年12月11日 上午9:35 #

      嗨 sura……感谢提问。

      我很想帮忙,但我实在没有能力为您调试代码。

      我很乐意提出一些建议

      考虑将代码积极削减到最低要求。这将帮助您隔离问题并专注于它。
      考虑将问题简化为一个或几个简单的例子。
      考虑寻找其他可行的类似代码示例,并慢慢修改它们以满足您的需求。这可能会暴露您的失误。
      考虑在 StackOverflow 上发布您的问题和代码。

  489. Niall 2023年1月5日 上午3:45 #

    准确率:86%,如果我在数据集上运行预处理转换和缩放器,并使用完整数据集进行训练/预测。
    准确率:训练时84%,测试时81%,使用训练:测试分割(只有在我对数据输入进行缩放后,准确率才能超过77%)。

    伟大的文章,清晰简洁地解释了每一行代码,并且发现文章末尾的扩展提示非常有帮助,您链接到了每个扩展建议的教程指南。喜欢这个网站上采取的全面方法。

  490. Jun Ho 2023年1月19日 下午5:24 #

    嗨 Jason,我能知道这是哪种类型的神经网络吗?是前馈、多层感知器还是其他?我觉得它可能是前馈。

    • Adrian Tam
      Adrian Tam 2023年1月20日 上午6:37 #

      这是多层感知器网络。但也是前馈网络,因为它总是朝前方向移动。有时,我们使用不同的名称来表示相同的事物。

  491. Abdullah 2023年2月22日 下午6:10 #

    在“加载数据”中,您应该从“numpy”导入“loadtxt”。
    因为像我这样的初学者习惯于逐个运行每一段代码。

    • James Carmichael 2023年2月23日 上午8:24 #

      感谢您的反馈和建议 Abdullah!

  492. DEEP HAZRA 2023年8月14日 下午11:11 #

    感谢知识分享。

    • James Carmichael 2023年8月15日 上午10:20 #

      感谢您的反馈和支持 Deep Hazra!我们很感激。

  493. Sharon Mano 2023年9月12日 上午12:34 #

    嗨,Jason,

    这是一个很棒的教程。我很欣赏您将其组合的方式。
    您是否有关于如何将训练好的网络与优化算法相结合以使用该网络找到最大化输出值的输入参数的文章?

  494. Alex 2023年9月12日 上午10:42 #

    我阅读了Smith于1988年发表的题为“使用ADAP学习算法预测糖尿病发病率”的论文,其中“糖尿病谱系函数”被用作神经网络训练的一部分。您能否解释一下该函数在Keras深度学习模型训练中的关系?

  495. Rob 2024年2月10日 下午4:38 #

    我在从tensorflow.keras.model导入时遇到错误。
    from tensorflow.keras.model import Sequential
    给我的错误是‘No module named ”tensorflow.keras.model”’

    我不得不更改导入为

    来自 keras.models import Sequential
    from keras.layers import Dense

    但现在不确定我所做的是否等效,我应该注意的是我还没有完成教程。

    我已经安装了tensorflow 2.15和keras 2.15。也许这是版本不匹配?我尝试过2.12,2.12,但遇到了同样的问题,不降级pip就无法回退。

Leave a Reply

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。