问题标签 [custom-training]

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 投票
1 回答
140 浏览

tensorflow - 如何在 Tensorflow Keras API 中使用配对数据集样本创建联合损失?

我正在尝试训练一个自动编码器,其约束迫使一个或多个隐藏/编码节点/神经元具有可解释的值。我的训练方法使用成对图像(尽管在训练后模型应该对单个图像进行操作)并利用一个联合损失函数,其中包括(1)每个图像的重建损失和(2)隐藏/隐藏值之间的比较来自两个图像中的每一个的编码向量。

我创建了一个类似的简单玩具问题和模型,以使这一点更清楚。在玩具问题中,给自编码器一个长度为 3 的向量作为输入。编码使用一个密集层来计算平均值(标量)和另一个密集层来计算向量的其他一些表示(根据我的构造,它可能只学习一个单位矩阵,即复制输入向量)。见下图。隐藏层的最低节点旨在计算输入向量的均值。除了必须适应与输入匹配的重建之外,其余隐藏节点不受约束。

玩具模型

下图展示了我希望如何使用配对图像来训练模型。“MSE”是均方误差,尽管实际函数的身份对于我在这里提出的问题并不重要。损失函数是重建损失和平均估计损失的总和。

玩具模型训练

我尝试创建 (1) 一个 tf.data.Dataset 来生成配对向量,(2) 一个 Keras 模型,以及 (3) 一个自定义损失函数。但是,我无法理解如何针对这种特殊情况正确执行此操作。

我无法让 Model.fit() 正确运行,并将模型输出与预期的数据集目标相关联。请参阅下面的代码和错误。任何人都可以帮忙吗?我已经完成了许多 Google 和 stackoverflow 搜索,但仍然不明白如何实现这一点。

输出:数据集中的示例批次:

输出:模型摘要:

输出:调用 model.fit() 时的错误信息:

0 投票
1 回答
871 浏览

python - 使用@tf.function 进行自定义张量流训练的内存泄漏

我正在尝试TF2/Keras按照官方 Keras 演练编写自己的训练循环。vanilla 版本就像一个魅力,但是当我尝试将@tf.function装饰器添加到我的训练步骤时,一些内存泄漏占用了我所有的内存并且我失去了对我机器的控制,有人知道发生了什么吗?

代码的重要部分如下所示:

如果我对这些@tf.function行发表评论,则不会发生内存泄漏,但步骤时间慢了 3 倍。我的猜测是,不知何故,图表是在每个时期或类似的情况下再次创建的 bean,但我不知道如何解决它。

这是我正在关注的教程:https ://keras.io/guides/writing_a_training_loop_from_scratch/

0 投票
0 回答
63 浏览

transformer - 训练 TimeSFormer 进行视频分类

我的输入数据是特征图,而不是原始图像。并具有以下形式:(4,50,1,1,256) mini_batch=4 / frames=50 / channels=1 / H=1 / W= 256 TimeSformer 的参数是:

为了检查我的网络是否正常工作,我试图通过仅使用 6 个训练数据和 2 个与以前形状相同的验证数据来使其过拟合(4,50,1,1,256)。但是我得到的训练精度处于振荡状态并且永远不会达到> 80%的值并且我的训练损失并没有减少它总是在附近0.6900 - 06950

我的训练函数和参数是:

我会很感激任何建议。谢谢你

0 投票
0 回答
76 浏览

python-3.x - Tensorflow 2.x 中的微批处理(累积梯度)与 tf.function

如何在 tensorflow 2.x 中实现微批处理?那就是我想累积几个批次的梯度,然后用这些累积的梯度更新权重(这实际上会将我的批量大小增加到累积步骤 * 批量大小)。

我尝试使用以下代码:

但是,我遇到了两个不同的问题,具体取决于我是在 tf.function 修饰函数中使用 tf.range 还是 range 。

  1. 使用范围:它适用于提供的迷你模型,但在我的用例中,模型明显更大(2.6 Mio 参数),当我像这样累积梯度时,会引发以下错误:

2021-04-24 18:19:28.349940: W tensorflow/core/common_runtime/process_function_library_runtime.cc:733] 忽略多设备功能优化失败:已超过截止日期:meta_optimizer 已超过截止日期。

我的猜测是使用范围(据我了解 tf.function 的工作原理)每个梯度累积步骤都会添加到图中,而不是重复这部分并仅添加一次。

  1. 用 tf.range 替换 range 会引发以下错误:

因此,我初始化了所有出现的变量,例如梯度、损失和预测,然后它可以工作,但它非常缓慢(在我的用例中)为什么会这样?

我错过了什么?非常感谢任何帮助。

0 投票
0 回答
25 浏览

model - 如何在我的 ssd 初始模型上添加新的检测对象?

我有一个问题,是否可以在新对象上重新训练对象检测模型?

我试过这个教程:https ://towardsdatascience.com/custom-object-detection-using-tensorflow-from-scratch-e61da2e10087 ,它工作得很好。现在我的模型可以检测到 8 个不同的对象。

但现在,这是我的问题,我想在 4 个新对象上重新训练他。是否存在不对这 12 个对象的所有图像进行重新训练的方法?只需在我的 4 个新对象上重新训练他,他就会检测到全部 12 个?我想使用我的旧模型,并在新的 4 个对象上训练他,因为如果我为这 12 个对象重新创建一个新模型,它将花费一些时间......

你知道我该怎么做吗?我尝试了一些东西,但它不起作用,因为他不想使用新的 4 个模型进行我的最后一个检查点(bcs 检测数量不匹配)。

非常感谢 !

0 投票
1 回答
17 浏览

pytorch - 如何在保持可训练性的同时将神经网络的输出转换为长类型

我的 pytorch 神经网络的输出是 float64 类型的数据。该变量必须用作像素偏移量,因此我需要将其转换为长类型。

但是我刚刚发现转换 out=out.long() 将变量属性“.requires_grad”切换为 False。

如何将其转换为长期维护“.requires_grad”为真?

0 投票
0 回答
26 浏览

neural-network - 带有子网络的训练网络

我计划从端到端训练以下网络。我有两个问题: 问题1在此处输入图像描述

我有 4 个基本事实。

  1. 失真图像的分割
  2. 参数
  3. 校正后的图像
  4. 校正图像的分割

我的问题是,如图所示,前两个输出来自网络 1 和 2,后两个输出来自网络 3。

有什么方法可以从头到尾训练我的网络。

问题2

如何加载 VGG 网络权重。我有从中间层到网络 2 和子网 1-2 的连接。

我正在使用 TensorFlow 2.4.1

0 投票
0 回答
218 浏览

spacy - 在多个 GPU(不仅仅是一个)上训练 spaCy NER 模型

我正在使用以下代码训练我的 NER 模型。

代码开始:

代码结束。

问题:

问题是每次迭代大约需要 30 分钟——我有 8000 条训练记录,其中包括很长的文本和 6 个标签。

所以我希望使用更多的 GPU 内核来减少它,但似乎只使用了一个内核 - 当我在上面的代码中执行 print(util.gpu) 时,只有第一个内核返回一个非零值。

问题 1:有什么方法可以在训练过程中使用更多的 GPU 内核来提高速度?我会很感激任何线索。

经过更多研究,spacy-ray 似乎旨在实现并行训练。但是我在 nlp.update 中找不到有关使用 Ray 的文档,因为我发现的只是使用“python -m spacy ray train config.cfg --n-workers 2”。

问题 2:Ray 是否支持使用 GPU 进行并行处理,是否仅适用于 CPU 内核?
问题 3:我如何将 Ray 集成到我使用 nlp.update 的 Python 代码中,而不是使用“python -m spacy ray train config.cfg --n-workers 2”。?

谢谢!

环境:

上面的所有代码都在 AWS Sagemaker 上使用 ml.p3.2xlarge EC2 实例的一个 conda_python3 笔记本中。
使用的Python 版本:3
spaCy 使用的版本:3.0.6

0 投票
1 回答
667 浏览

spacy - NER spacy 自定义训练模型无法正确预测标签

使用文档https://towardsdatascience.com/train-ner-with-custom-training-data-using-spacy-525ce748fab7https://spacy.io/usage/processing-pipelines训练 NER spacy自定义训练模型测试用例数据集以在给定文本中准确找到货币。

示例数据集:

通过将模型命名为“货币”成功地训练了模型。它对带有正确标签的训练数据集预测良好,但大多数情况下它预测带有错误标签的未经训练的文本数据。

输入测试行:'I have AZWSQTS lot LOT of Indian MZW currency USD INR'

输出:

AZWSQTS - CUR,LOT - CUR,MZW - CUR,美元 - CUR,印度卢比 - CUR

在这里,“AZWSQTS”和“LOT”不是一种货币,但它预测,这就是我遇到的问题。

完整代码:

0 投票
1 回答
160 浏览

tensorflow - 使用 iou_threshold 0.5 的评估是 0.000000

我正在使用 PixelLib 来创建自定义培训。这些是我的训练步骤:

我得到的结果是:

因此,损失是一个可接受的值(大约 0.22),但是当我评估模型时:

我得到了这个结果:

这看起来很奇怪,因为损失很低但 IoU 值正好是 0.0。可能是什么问题,我该如何解决?提前致谢