问题标签 [tf.keras]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1852 浏览

python - 有没有办法在 tf.keras 中的指定时期保存模型?

使用 tf.keras.callbacks,我只能通过选择一个要监控的属性(通常是验证准确度)来自动保存最佳模型,但有时,我需要根据验证和训练准确度的比较来保存它。我怎样才能做到这一点?

tf.keras.history 文件是否记录了模型在每个时期的权重?如果是这样,我如何通过指定我想要的时代来从历史文件中保存我的模型?那是另一种可能的解决方案。

这就是我遇到的情况:有时,我的验证准确度在早期阶段非常高(我想这纯粹是偶然),而我的训练准确度仍然远低于它。这个时期最终成为自动保存的模型。这是一个糟糕的模型,因为它的训练准确度很差,但它是因为它的高验证准确度而被保存下来的。如果它保存在训练和验证准确性相遇的地方,那将是一个非常好的模型。因此,在每个时期,我更愿意比较训练准确度和验证准确度,选择两者中最低的一个,并据此决定我的最佳模型。关于如何做到这一点的任何建议?

0 投票
2 回答
402 浏览

python - 如何在 tf.keras 中设置 Conv2D 的默认参数?

支持我有一个带有 5 个卷积的网络。我是由 Keras 编写的。

我想将所有卷积设置kernel_initializer为 xavier。一种方法是:

但是这样的写法很伤感,代码也很冗余。

有没有更好的写法?

0 投票
1 回答
10297 浏览

python - TensorFlow model.fit() 使用数据集生成器

我正在使用 Dataset API 生成训练数据并将其分类为 NN 的批次。

这是我的代码的最小工作示例:

该代码在调用时使用 TensorFlow 1.13.1 失败,model.fit()并出现以下错误:

我尝试使用 TensorFlow 2.0 在另一台机器上运行相同的代码(在删除该行之后,tf.enable_eager_execution()因为它默认会急切地运行)并且我收到以下错误:

我尝试更改model.fit()为,model.fit_generator()但这在两个 TensorFlow 版本上也都失败了。在 TF 1.13.1 上,我收到以下错误:

在 TF 2.0 上,我收到以下错误:

然而batch_size不是fit_generator().

我对这些错误消息感到困惑,如果有人能对它们有所了解,或者指出我做错了什么,我将不胜感激。

0 投票
0 回答
416 浏览

tensorflow - YOLO v3 完整架构

我正在尝试从头开始在 Tensorflow-Keras 中实现 YOLO v3,目的是在自定义数据集上训练我自己的模型。我的意思是不使用预训练的 weights。我浏览了 YOLOv1、YOLOv2(YOLO9000) 和 YOLOv3 的所有三篇论文,发现虽然 Darknet53 被用作 YOLOv3 的特征提取器,但我无法指出之后扩展的完整架构——“检测”层说到这里。在阅读了大量来自 Medium、kdnuggets 和其他类似网站的博客文章后,我最终提出了一些重要的问题:

  • 我是否错过了 YOLOv3 论文中检测层的完整架构(在用于特征提取的 Darknet53 之后扩展)?
  • 作者似乎在不同的训练阶段使用了不同的图像尺寸。网络是否会自动对图像进行放大/缩小?
  • 对于图像的预处理,调整它们的大小然后对其进行归一化(除以 255)真的就足够了吗?

请善意地指出我正确的方向。感谢您的帮助!

0 投票
2 回答
6318 浏览

python - How do you apply layer normalization in an RNN using tf.keras?

I would like to apply layer normalization to a recurrent neural network using tf.keras. In TensorFlow 2.0, there is a LayerNormalization class in tf.layers.experimental, but it's unclear how to use it within a recurrent layer like LSTM, at each time step (as it was designed to be used). Should I create a custom cell, or is there a simpler way?

For example, applying dropout at each time step is as easy as setting the recurrent_dropout argument when creating an LSTM layer, but there is no recurrent_layer_normalization argument.

0 投票
1 回答
3013 浏览

tensorflow - 在 Keras 中使用 TF Dataset API 的既定方法是使用 `make_one_shot_iterator()` 提供 `model.fit`,但这个迭代器只适用于一个 Epoch

编辑:

为了澄清为什么这个问题与建议的重复项不同,这个 SO 问题跟进了那些建议的重复项,Keras 究竟在用这些 SO 问题中描述的技术做了什么。建议的重复项使用数据集 API 指定make_one_shot_iterator()model.fit我的后续行动是make_one_shot_iterator()只能通过数据集一次,但是在给出的解决方案中,指定了几个时期。


这是对这些 SO 问题的跟进

如何正确结合 TensorFlow 的 Dataset API 和 Keras?

带有 tf 数据集输入的 TensorFlow keras

使用 tf.data.Dataset 作为 Keras 模型的训练输入不起作用

其中“从 Tensorflow 1.9 开始,可以将 tf.data.Dataset 对象直接传递给 keras.Model.fit(),它的行为类似于 fit_generator”。每个示例都有一个 TF 数据集 one shot iterator 输入到 Kera 的 model.fit 中。

下面给出一个例子

但是,根据 Tensorflow 数据集 API 指南(此处为https://www.tensorflow.org/guide/datasets):

one-shot 迭代器是最简单的迭代器形式,仅支持对数据集进行一次迭代

所以它只适用于 1 个 epoch。但是,SO 问题中的代码指定了几个 epoch,上面的代码示例指定了 5 个 epoch。

这个矛盾有什么解释吗?Keras 是否知道当单次迭代器遍历数据集时,它可以重新初始化和打乱数据?

0 投票
1 回答
2579 浏览

python - tf.keras 预测很差,而评估很好

我在 tf.keras 中编写模型,在训练集上运行 model.evaluate() 通常会产生约 96% 的准确率。我对测试集的评价通常很接近,大约 93%。但是,当我手动预测时,模型通常是不准确的。这是我的代码:

我听说很多时候人们遇到这个问题,这只是数据输入的问题。但是我在这里看不出有什么问题,因为它几乎总是错误地预测(如果它是随机的,就和你预期的一样多)。我该如何解决这个问题?

编辑:以下是具体结果:

最后训练步骤:

评估输出:

model.predict_classes 的输出:

打印输出(y_test):

0 投票
0 回答
1443 浏览

tensorflow - keras.backend.function return a AttributeError: Layer dense is not connected, no input to return

我想知道中性网络的中值结果以进行调整。我设计了我的模型并使用了 keras.backend.function 但失败了(AttributeError: Layer dense is not connected, no input to return)。这是我的例子:

并受到AttributeError: Layer has no inbound nodes 或 AttributeError: The layer has no inbound的启发

我试过了:

在我拟合模型之后,但出现另一个错误:TypeError: Cannot translate feed_dict key as Tensor: Tensor Tensor("input_1_1:0", shape=(?, 2), dtype=float32) is not an element of this graph。

0 投票
1 回答
999 浏览

tensorflow - tf.keras 中带有 tfrecords 或 numpy 的数据管道

我想用比我的内存大的数据在 Tensorflow 2.0 的 tf.keras 中训练一个模型,但教程只显示了带有预定义数据集的示例。

我遵循了本教程:

使用 tf.data 加载图像,我无法对 numpy 数组或 tfrecords 上的数据进行此操作。

这是一个将数组转换为 tensorflow 数据集的示例。我想要的是使这项工作适用于多个 numpy 数组文件或多个 tfrecords 文件。

0 投票
0 回答
261 浏览

tensorflow - 在我的 RL 代码中,tf.keras 比 Keras 慢 4 倍

我对机器学习很陌生。我在 Github 上找到了这个例子:代码

我实现了 q_learning_keras 函数并将 Keras 模型更改为 tf.keras 模型。

使用 Keras 模型 1000 集大约需要 30 分钟。
使用 tf.keras 模型 1000 集大约需要 110 分钟。
此外,tf.keras 变体需要大约 5-7% 的 CPU 功率。

我使用的是 Tensorflow 1.13.1 版和 Keras 2.2.4 版。
我在 4 核 @ 2.6 GHz 的虚拟机上运行代码。

凯拉斯模型:

tf.keras 模型:

其余代码完全相同,就像上面链接的 Github 示例中一样。

在最结束的帖子中,我发现了完全相反的问题,即 Keras 比 tf.keras 慢。所以我也希望能提高速度,或者至少保持不变。
所以我想,我可能犯了一个错误,但我没有找到它。

编辑:
使用 Tensorboard 进行更多研究以查看模型的外观。这些模型在大多数情况下看起来非常相似。但是 tf.keras 模型有一些开销。我不知道这对于 tf.keras 模型是否正常,或者它是否来自我构建模型的方式。

tf.keras 模型 keras 模型