问题标签 [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 回答
478 浏览

python - 小型网络中 CPU 和 GPU 的慢速训练(tensorflow)

这是我试图在 CPU 和 GPU 上运行的原始脚本,我期望在 GPU 上进行更快的训练,但它几乎需要相同的时间。我对(前 4 行)进行了以下修改,main()因为原始脚本没有激活/使用 GPU。建议...?

更新:

wandb 的报告显示 GPU 利用率为 0%,这证实存在问题

有问题的完整代码不是我的,属于这个存储库

0 投票
0 回答
118 浏览

python - 尽管手动激活,张量流 0% GPU 利用率

这是对我之前的问题的跟进,在该问题中我指出 CPU 和 GPU 的训练性能较慢。我在 google colab 上进行了另一次测试运行,并使用wandb来监控训练并显示 CPU、GPU 利用率和其他几个指标,它显示 0% GPU 利用率,这确认 GPU 未在使用中,而 tensorflow 只是忽略了激活或者我没有不知道。

tf我使用( 2.3.1)激活 GPU :

训练几分钟内的图表:

报告-1

报告-2

报告-3

0 投票
2 回答
883 浏览

dataset - YOLOv4 训练:无法在单个图像上检测多个类

我使用 Open Images 数据集为两个类训练 CNN:Person、Mobile phone。问题是 Yolo 每张图片只检测到 1 个类别。例如,如果图像包含人和手机,则只会检测到手机。示例输出。如果只有人类,那么将成功检测到所有人类。我认为问题在于数据集只有图像,每个图像标记了 1 个类。我在数据集中有许多图像,其中两个类都存在,但只有其中一个带有标签。这可能是问题吗?

我该如何解决这个问题?

  1. 添加几个标记了两个类的图像
  2. 标记所有图像以确保包含电话和人的每个图像都具有每个对象的适当标签
  3. 或者也许有一种方法可以下载数据集,以便正确标记两个类?

这是我的 .names 文件中的内容:

这是 .data 文件:

谢谢你的帮助!

0 投票
0 回答
56 浏览

python - Tensorflow:如何修改第 N 层的反向传播

我需要进行一种自定义反向传播,以便在网络的任意层中,我可以决定是否实际修改该层之外的权重,或者使它们保持不变。例如:我想研究如果在训练期间强制不更新将输入层连接到第一层的某些权重会发生什么。

有没有一种简单的方法来“纠正”层之间相交的正常反向传播?

谢谢

0 投票
0 回答
49 浏览

python - Tensorflow 训练在每个 epoch 后都会变慢

我使用 Titan Xp GPU。代码在下面,但我不知道问题出在哪里。为什么每个 epoch 的训练时间不断增加?最初我每分钟可以处理大约 180 个批次,但在三个 epoch 之后,我每分钟只能处理 5 个批次。

纪元 00006: 77428/77428 [==============================] - 59041s 763ms/步

纪元 00007: 77427/77428 [============================>.] - 68783s 888ms/step

0 投票
2 回答
736 浏览

python - 循环创建模型使 Keras 越来越慢

当我多次训练一个模型时,训练迭代会减慢,即使所有相关数量都是在for循环内创建的(因此每次都应该被覆盖,这应该足以避免创建不断增长的计算图或填满内存或任何)。

这是我使用的代码:

我知道我可以model.fit()用来训练模型,但这不是我的选择(上面的代码是通过剥离更复杂的代码获得的,我唯一的选择是直接调用优化器)。

输出:

我预计每次训练所用的时间大致相同,但有明显的上升趋势。我究竟做错了什么?

系统信息

  • 操作系统:Windows 10
  • 蟒蛇版本:3.7.9
  • 张量流版本:2.3.1

编辑

在@Nicolas Gervais 和@M.Innat 的回复之后,我一直在不同机器上试验两个版本的代码(我的和@M.Innat 的)。这是我发现的:

  • 在我测试的两台单独的 Windows 机器上(相同的 Windows 版本、相同的包版本、相同的 python 版本、在干净的 virtualenv 上),结果存在很大差异;两者中最好的仍然显示出训练时间的上升趋势,但比我最初测试的要小;两者中最好的结果如下:
  • 如您所见,时间看起来比我最初在第二台 Windows 机器上发布的更稳定(但请注意,当我在用于初始测试的机器上进行测试时,它们基本相同);尽管如此,趋势仍然清晰可见;这很奇怪,因为@M.Innit 发布的结果中没有发生这种情况;
  • 在 Linux 或 Mac OS 上都不会出现此问题。

我开始觉得这是 Tensorflow 中的一个错误,不知何故(即使具有相同确切配置的不同机器产生如此不同的结果很奇怪),但我真的不知道将此行为归因于什么

0 投票
0 回答
18 浏览

tensorflow - 训练我自己的对象检测。我应该使用以前的一个检查点作为微调吗?

我一直在慢慢地将更多图像添加到我的收藏中以进行对象检测。目前,我总共有大约 500 张图像被注释并用于训练和评估。我每天向集合中添加大约 20 个带注释的图像。每个指南都说在使用其中一个动物园模型进行训练时,使用预训练模型检查点作为微调检查点。我目前的方法是将新的添加到训练和评估记录中,然后从头开始训练。这是反对创建新的较小注释集合并基本上继续以无限步骤训练单个会话的正确方法吗?有没有时候我会更好地使用我以前的培训课程中的一个检查点来获得更好的结果?那会以较低的初始损失开始训练吗?

我看到这个问题很相似并且确实有帮助(操作方法),但是如果有人尝试过,我很想听听您的经验或知道为什么这是或不是一个好主意。它还告诉我,我的规模太小,无法考虑这些事情,但总有一天我会到达那里。:)

0 投票
0 回答
34 浏览

python - 如何使用 tf.GradientTape 训练分支神经网络?

我正在尝试使用 Keras 和 TF2 训练一个分支模型,其结构类似于此图像模型架构

基本上,我有一个图像数据集,它将通过一个编码器传递给我一个潜在向量作为结果。根据特定条件,开关会将此潜在向量传递给 4 个 DNN 之一。它们都产生自己的输出和损失,总损失是它们的总和。

所以,我的问题是,我应该如何使用 tf.GradientTape() 来跟踪梯度并更新模型可训练变量,因为小批量中的数据不会以一种方式流动?

Obs:我已经想出了一种在前进步骤中将潜在向量传递给正确 DNN 的方法。

0 投票
1 回答
688 浏览

google-colaboratory - 在 Google Colab 上训练模型时,我应该保持连接吗?

在 Google Colab 上为对象检测训练数据集模型 (Darknet) 时,我是否需要与 Colab 和互联网保持连接?由于培训在 Colab 上进行并连接到我的驱动器,因此重量文件将保存在我的谷歌驱动器文件夹中。那么,我可以断开互联网并退出 colab 吗?

这是我在 COLAB 上开始训练过程时显示的最后一个屏幕,现在我正在等待我的体重文件保存在我的驱动器中

0 投票
0 回答
47 浏览

tensorflow - tf.GradientTape() 中的 MULTIPLE FORWARD PASS 似乎重复了权重

我根据这篇论文编写了一个自定义模型,用于 TF2.0 中的样式转换。简而言之,所提出算法的损失函数需要评估 3 个损失分量。该模型接受 2 个输入图像,比如 Ic、Is(c 代表内容,s 代表风格),然后弹出一个拼贴图像 O。

在单个训练步骤中,网络接收以下一对作为输入并弹出相应的图像:

  • Ic,是 -> O(需要)
  • Ic, Ic -> O 身份损失1
  • 是,是 -> O 身份损失2

然后一个特征网络评估不同的损失分量(因为主网络需要 3 次前向传递,但不是可训练网络的一部分,因此它具有不可训练的权重)

代码如下所示:

我可以很容易地训练模型,但是当我尝试 save_weights 时,我得到:

似乎某些权重被复制(包括名称)在保存它们时出现上升错误。

...有人知道吗?