问题标签 [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.
python - TensorFlow 2 张量的唯一标识符?
我需要能够在调试输出中清楚地区分张量。让我用一个示例问题来说明这一点:
输出是:
在这里,我试图获得一个简单损失函数相对于某个输入变量的梯度。在“z1”的情况下,该示例运行良好,因为存在从x
到的图形连接z1
。x
但是它在 z2 的情况下会中断,因为从到没有图形连接z2
。y
通过从 的值初始化一个新变量 ,此连接“意外”中断x
。在这个例子中问题很明显,但在我更复杂的实际代码中,意外替换像这样的变量更容易,从而破坏计算。然后我不得不四处寻找,试图找出我在哪里犯了这样的错误。
如果我可以检查张量并找出它们在哪里变成不同的对象,这个过程会容易得多。例如,是否有某种独特的 ID 属性或我可以检查的东西?在上面的示例中,我无法分辨,x
实际上y
是与打印输出完全不同的变量。它们看起来相同,但当然不是。
所以我需要其他可以打印的东西来帮助追踪x
意外被交换为y
. 有没有这样的财产?肯定有,但我找不到。也许我可以打印对象的内存地址或其他东西,但我也不确定如何在 Python 中做到这一点。
python - TensorFlow 2 中的“DatasetV1Adapter”和“BatchDataset”有什么区别?
我正在尝试按照以下来源实现 PiX2Pix 框架:https ://www.tensorflow.org/tutorials/generation/pix2pix?hl=ru ,但有一个例外。
我正在尝试使代码适用于 MINST 数据集,而不是适用于他们使用的外观数据集。我注意到在 train_images 的预处理和 train_images 到 train_dataset 的转换结束时,外观数据集的数据类型是“DatasetV1Adapter”,但对于 MNIST,它是“BatchDataset”。现在,我的代码无法正常工作,并且在运行培训后出现“太多值无法解包”的错误消息,我认为这与这种差异有关。有没有办法将它们从一种转换为另一种?
我是 python 和 tensorflow 的新手,完全不知道这个问题。一些帮助将非常受欢迎。谢谢你。
python-3.x - 用于 CNN 的 TensorFlow Xavier 初始化程序的 numpy 等效项是什么?
我想在 NumPy 中重新创建 Xavier 初始化(使用基本函数),就像 TensorFlow2 为 CNN 所做的那样。以下是我在 NumPy 中学习 Xavier 初始化的方法:
这是我为逻辑回归模型学习 Xavier 初始化的方式。似乎对于卷积神经网络,它应该有所不同,但我不知道如何。
当 TensorFlow文档解释“fan_in”和“fan_out”时,我感到很困惑。我猜这就是问题所在。有人可以帮我把它弄糊涂吗?
非常感谢!
[更新]:
当我遵循tf.keras.initializers.GlorotUniform文档时,我仍然没有得到相同的结果:
python-3.x - TensorFlow 2.2.0 未从 tensorflow.keras.models PyVer==3.8 导入 Sequential
在尝试运行后出现的错误下方,如果回滚顶级 Tensorflow 2.0 版本,该错误不会持续存在。在 Jupyter Notebook 中自动完成时,所有部分都正常显示,只是无法加载。有什么可能的解决方法来避免回滚到旧版本?
在:
出去:
tensorflow - 带有 keras.utils.Sequence 对象或 tf.data.Dataset 的输入管道?
我目前正在使用一个tf.keras.utils.Sequence
对象为 CNN 生成图像批次。我正在使用 Tensorflow 2.2 和Model.fit
模型的方法。use_multiprocessing=True
当我拟合模型时,当我设置时,每个时期都会引发以下警告tf.keras.model.fit(...)
:
正如文档和我使用Sequence
基于 - 的生成器的事实所预期的那样,该模型正在优化。但是,如果use_multiprocessing
要使用已弃用的功能代替tf.data
对象,我希望使用最新的输入管道。我目前使用以下tf.keras.utils.Sequence
基于生成器的生成器,该生成器受这篇关于大型数据集分区良好实践的文章的启发:
https ://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly
所有类的所有数据都在data_dir
目录中,并存储为单独的.npy
文件。ID 来自字符串列表。类标签取自以 ID 为键的字典——如文章中所述。
Sequence
我真的很喜欢发电机设置的直觉。我还可以轻松地生成随机批次来检查它的行为是否符合我的预期。但是我怎样才能重现这个设置tf.data
呢?如何Sequence
使用interleave
和prefetch
方法重现生成器的多处理批量生成tf.data.Dataset
?和/或我可以简单地使用该方法摄取这个Sequence
基于生成器吗?tf.data.Dataset.from_generator()
提前谢谢了。
python - 如何在 tensorflow 2 中使用类权重进行多标签二元分类?
问题是我只在 TensorFlow 2 文档中找到了一个标签二进制分类的示例。
我已经尝试过的解决方案是使用 class_weight 列表、class_weight dict 和 class_weight 数组。我想知道是否有办法将多标签二进制分类类权重注入TensorFlow 2的fit()
我尝试过的例子
python - 使用 tf.data.TFRecordDataset 时出现无法解释的 RAM 使用情况和潜在的内存泄漏
背景
我们对 TensorFlow 比较陌生。我们正在研究一个涉及视频数据集的 DL 问题。由于涉及的数据量很大,我们决定对视频进行预处理并将帧作为 jpeg 存储在 TFRecord 文件中。然后,我们计划使用tf.data.TFRecordDataset
将数据提供给我们的模型。
视频已被处理成序列化张量中的片段,每个片段由 16 帧组成。每帧是一个 128*128 的 RGB 图像,编码为 jpeg。每个序列化段与一些元数据一起作为序列化存储tf.train.Example
在 TFRecords 中。
TensorFlow 版本:2.1
代码
下面是我们用来tf.data.TFRecordDataset
从 TFRecords 创建的代码。您可以忽略num
和file
字段。
问题
在训练时,我们的模型因为内存不足而崩溃。我们通过运行一些测试并使用带有标志的memory-profiler分析内存来进行调查。--include-children
所有这些测试都是通过使用以下代码多次迭代数据集来运行的(仅限 CPU):
我们现在正在处理的 TFRecords 子集的总大小约为 3GB 我们更喜欢使用 TF2.1,但我们也可以使用 TF2.2 进行测试。
根据TF2 文档,file_buffer 以字节为单位。
试用一:file_buffer = 500*1024*1024,TF2.1
试用二:file_buffer = 500*1024*1024, TF2.2 这个好像好多了。
试用 3 file_buffer = 1024*1024, TF2.1 我们没有这个情节,但 RAM 最大约为 4.5GB
试用4 file_buffer = 1024*1024,TF2.1,但预取设置为10
我认为这里存在内存泄漏,因为我们可以看到内存使用量随着时间的推移逐渐增加。
以下所有试验仅运行 50 次迭代,而不是 100 次
试用 5 file_buffer = 500*1024*1024, TF2.1, prefetch = 2,所有其他 AUTOTUNE 值都设置为 16。
试用6 file_buffer = 1024*1024,其余同上
问题
- file_buffer 值对内存使用有什么影响,对比 Trail 1 和 Trail 3,file_buffer 减少了 500 倍,但内存使用量只减少了一半。文件缓冲区值真的以字节为单位吗?
- 试验 6 的参数看起来很有希望,但尝试用相同的参数训练模型失败了,因为它再次耗尽了内存。
- TF2.1有bug吗,为什么试玩1和试玩2差别这么大?
- 我们应该继续使用 AUTOTUNE 还是恢复到恒定值?
我很乐意使用不同的参数运行更多测试。提前致谢!
python - 如何在 Python 中的分类器中显示预测的置信度(Tensorflow 2.2/Keras)
我的预测输出有问题。我留下了我的分类器的模型代码(6个类)我正在使用Tensorflow 2.2代码是:
而对于预测:
好吧,当我执行 model.predict(image_to_predict) 并打印结果时,返回给我的输出如下:
输出是正确的,检测到的类是预期的,但这不是我想要的。我需要有一个输出,可以让我恢复做出选择的信心百分比,例如:
但我找不到任何能让我确定评估的功能。有人知道我该怎么做吗?