问题标签 [tensorflow2.x]
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.
keras - TensorFlow 2-tf.keras:如何使用 tf.data API 和 TFRecords 训练 tf.keras 多任务网络,如 MTCNN
最近我正在尝试使用 TFRecords 来训练 tf.keras 模型。由于对于 TensorFlow 2,最有效的方法是使用 tf.data API,我尝试使用它来训练我的 MTCNN Keras 模型。但这让我感到困惑:
根据原始论文,不同的样本(pos、neg、part-face、landmark)参与训练的不同部分。并且每种样本在每个mini-batch中都有一个特定的比例,即对于一个mini-batch,pos、neg、part-face和landmark样本的比例应该是1:3:1:2。
因此,例如,在我制作了四个 TFRecord 样本后,我需要从 postfrecords 中提取 128 个样本,从 neg 中提取 384 个样本,从 part-face 中提取 128 个样本,从界标 tfrecords 中提取 256 个样本,并将它们混合成一个 mini-batch . 然后我需要在训练前对批次进行洗牌。
在使用 TFRecords 和 tf.data API 时,我真的不知道如何进行此操作。现在我只能通过批量读取图像和标签来实现所有这些步骤,但是训练速度太慢了。所以我想知道是否有任何有效的方法可以做到这一点。
任何建议表示赞赏。
更新于 2020.04.04 15:38
感谢@AAudibert,我认为他/她的回答效果很好,我也想出了一种实现方法。这是供参考的代码:
python - 编写与 TensorFlow 1 和 2 兼容的代码的最佳实践
本官方指南解释了如何将 TF 1 代码迁移到 TF 2。然而,这不是我想要的。我希望我的代码在 TF 1 和 TF 2 上都能正常运行(而且我只想要非急切模式)。另外,我慢慢想使用一些新功能,但以一种可选的方式。(例如,用户可以传递一些选项,例如--use-fancy-new-tf2-feature
,它只适用于 TF 2。这很好。)也许在一两年后,我会慢慢放弃对 TF 1 的支持。但我绝对需要这个过渡阶段,同时支持两个 TF 版本。
我真的没有在迁移指南中看到这个问题的答案。也许答案是根本没有“最佳实践”。虽然我认为其他更大的项目可能会想做类似的事情。或者答案可能是这太费力了,所以他们只是直接迁移。
我也许可以这样做:
但是,这有一些缺点:
- 我需要将此代码片段放在我使用 TF 的每个模块中。
- 我可以把它放在一些自己的模块中,比如
tf_import.py
,然后简单地在from tf_import import tf
任何地方做。但这有点难看。
- 我可以把它放在一些自己的模块中,比如
- 这可能会使代码变得复杂,实际上想要使用一些新的 TF 2 功能。
我也许可以这样做:
这可能更干净。但我不确定这是否是要走的路。或者其他人是怎么做的。
另外,disable_v2_behavior
我可以打电话而不是打电话disable_eager_execution
。但这可能会使其他一些代码更难兼容 TF 1 和 TF 2。
(我在这个 GitHub 问题中为我们的项目RETURNN收集了其中的一些想法。)
tensorflow - TensorFlow XLA 是否已弃用?
我刚刚读到(这里):
在此版本中弃用 XLA_CPU 和 XLA_GPU 设备。(TF 2.2.0)
XLA 现在被弃用了吗?它不再使用了吗?有替代方案吗?还是这一切都是在内部自动处理的?这种弃用是什么意思?
python - TensorFlow 1.x 上用于优化的 TFLiteConverter 参数
我一直在使用 TFLiteConverter 在 TensorFlow 2.x 上学习量化,但是我正在 TensorFlow 1.13 上实现一个项目,我想知道如何在这个版本上做同样的事情。
例如,据我观察,以下命令做同样的事情
这样对吗?那么整数量化和量化感知训练呢,如何实现呢?
python - 无法导入 tensorflow - 无法加载原生 TensorFlow 运行时
我使用虚拟环境安装了 tensorflow(代码如下所示):
这将安装 tensorflow 2.1.0
但是,当我在 Python 中尝试“import tensorflow as tf”时,会收到以下错误消息:
知道为什么这不起作用吗?Python版本是3.6.10,conda版本是4.8.2
tensorflow2.x - 为什么评估过程不会停止
model.evaluate(..., verbose=1)
我无法理解的显示线,请任何人向我解释这意味着
278452/Unknown - 36360s 13ms/step -loss:0.783 - accuracy:0.708
这些数字增加并且过程不会停止。可能是因为我不使用回调?
python - 使用 tensorflow 2 实现梯度惩罚损失
早上好,
我正在尝试按照本文所述为一维数据实施改进的 WGAN: https ://arxiv.org/pdf/1704.00028.pdf
它已经在 keras-contrib github 中作为示例实现: https ://github.com/keras-team/keras-contrib/blob/master/examples/improved_wgan.py 然而,梯度惩罚损失的这种实现并不是不再使用 tf2。K.gradients() 返回 [None]。
这是问题的完整示例: https ://colab.research.google.com/drive/11dcMKoiCigTnEn7QvmjqLNrJdmFztByT
有谁知道发生了什么变化?知道如何解决这个问题吗?
更新:这忽略了构建计算图时的错误。然后它似乎运行
python-3.x - 刚切换到 TensorFlow 2.1 并收到一些烦人的警告
系统信息:
- 笔记本电脑
- 操作系统平台和发行版:Ubuntu Linux、18.04、x64
- TensorFlow 安装自:pip
- TensorFlow 版本:2.1.0
- Python版本:3.6.9
- GPU型号和内存:nVidia RTX2060 6GB
- CPU型号:i7-9850H
- 内存:16GB
我正在使用另一台 PC 在 CPU 上使用 TensorFlow 2.0。
我安装了(使用https://www.tensorflow.org/install/gpu上的指南)CUDA 10.1。
我开始在 26998 个训练图像和 1000 个训练图像的数据集上使用 ResNet50V2 为 NN 运行一个旧脚本,作为 2 个类的验证。
互联网
其中 keras_layer 是从 tensorflow_hub 获得的 resnet。
作为第一个问题,我得到了一个CUDA_ERROR_OUT_OF_MEMORY
我解决的添加
但是现在我收到了类似的警告:
都打印了好几次。
在此之后我得到:
我读到它们不相关,但我不清楚可能导致第二次警告的原因。
最后,出现了这样的情况:
(我认为它们是由三个不同的问题引起的,我决定将所有问题都发布在一个问题中以防止垃圾邮件,但如果这是一个问题,我可以分成不同的线程。)
我曾经ImageDataGenerator
生成数据集:
如果需要其他代码,我会添加。
谢谢。
编辑1:
对于警告:
我试图设置workers=1
并fit()
消失,但我仍然不知道这个警告的原因和后果。
tensorflow - 用于加载任意 numpy 张量的 Keras 替代 ImageDataGenerator
Keras 的 ImageDataGenerator 看起来非常适合简单地逐步加载图像并将迭代器传递给 model.fit 函数。然而,它似乎只适用于图像和分类任务。
我想做回归,即我的标签也是与训练集形状相同的数组。在实践中,它们是像图像一样的多维(>1 个通道)数组,但它们不是图像。
关于使用什么类来简单地将批量数据发送到 keras model.fit() 以训练深度神经网络的任何建议?
当然,问题是我的数据集太大而无法放入内存,这就是我需要使用这些生成器/迭代器的原因。