问题标签 [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 投票
0 回答
20 浏览

pytorch - 如何在训练期间更改/重置单个神经元

我想测试在训练期间随机重置某些神经元的影响是什么,在一个基于 Pytorch 的模型中,它具有多个线性层,如下所示:

理想情况下,我想实现一个函数/代码片段,在每个时期开始时重置每一层中 1 个或多个随机神经元的权重。

我尝试通过调用参数或 state_dict 来实现此功能,但到目前为止,我在尝试此操作时仅获得许可和异常错误。我也不确定这是否应该在模块本身或培训部分实现。

任何建议都将受到高度欢迎!

0 投票
1 回答
56 浏览

computer-vision - 从头开始训练网络的准确性极差

我正在尝试使用类似于 ImageNet 的数据集从头开始重新训练 resnet50。我写了以下训练循环:

但是我的训练和验证准确性极差,如下所示:

谷歌搜索后,我发现从头开始训练的准确度通常不会那么差(实际上它们从大约 40% - 50% 开始)。我发现很难理解故障可能在哪里。如果有人可以帮助我找出我可能出错的地方,那就太好了。

谢谢

0 投票
0 回答
447 浏览

json - 如何将多边形 json 转换为图像蒙版进行图像分割?

我目前正在做一个图像分割项目,我正在使用 Labelbox 来注释我的训练/验证集。

标记后,导出会提供一个 JSON 元数据文件。

如何将此 JSON 文件转换为掩码?这里的想法是拥有成对的图像和掩码,然后进行模型训练。

编辑 :

Labelbox 导出具有以下结构:

例如,我想提取 LabelIDs 图像,这样我就可以拥有与 CamVid 相同的数据集结构。

0 投票
1 回答
414 浏览

python - 使用 pack_padded_sequence 时,带有 CUDA 的 Pytorch 会引发 RuntimeError

我正在尝试训练 BiLSTM-CRF 使用 Pytorch 检测新的 NER 实体。为此,我使用了派生自Pytorch 高级教程的代码片段。这个片段实现了批量训练。

我遵循 READ-ME 以根据需要提供数据。一切都在 CPU 上运行良好,但是当我尝试将其用于 GPU 时,会发生以下错误:

如果我理解得很好,pack_padded_sequence 需要张量在 CPU 而不是 GPU 上。不幸的是,我的 forward 函数调用了 pack_padded_sequence,如果不返回 CPU 进行整个训练,我看不到任何方法。

这是完整的代码。

类定义:

训练单元:

0 投票
0 回答
119 浏览

python - ValueError:[E024] 找不到监督解析器的最佳移动。在使用 Spacy v3.x 训练自定义 NER 时

在使用 spacy v3.x 训练我的自定义 NER 模型时,

它把我抛到了错误之上。

" ValueError("[E024] 找不到监督解析器的最佳移动。通常,这意味着无法以有效且满足 GoldParse 中指定的正确注释的方式更新模型。"

为了将我的 json 数据转换为新的 Spacy v3.x 推荐格式,我使用了这段代码

我该怎么办?提前致谢

配置文件

0 投票
1 回答
239 浏览

python - 如何检查自定义训练循环之前/之后 Keras 模型的可训练权重是否发生变化

我正在尝试验证自定义训练循环是否会更改 Keras 模型的权重。我目前的方法是deepcopymodel.trainable_weights训练前列出清单,然后与训练后进行比较model.trainable_weights。这是进行这种比较的有效方法吗?我的方法的结果表明权重确实发生了变化(无论如何这是预期的结果,因为每个时期的损失明显减少),但我只是想验证我正在做的事情是有效的。下面是稍微改编的Keras 自定义训练循环教程中的代码,以及我用来比较模型训练前后权重变化的代码:

0 投票
0 回答
33 浏览

python - 当我在自定义循环中使用 keras 回调时,日志字典是否仍作为输入传递?

我正在训练我的模型,并编写了一些Keras自定义回调,我将它们包装在 a 中tf.keras.callbacks.CallbackList并使用.on_train/epoch/batch_begin/end()函数调用。这些函数有两个参数epoch/batchlogs,它是一个字典,其中包含一些您可以设置的临时值,据我所知,使用高级model.compile()model.fit(),当然我不能在这里使用。我的问题是:这个字典是否仍然使用自定义回调和循环创建,如果是,我如何更新,比如说,logs["loss"]在其他回调中找到更新的值?

0 投票
0 回答
26 浏览

python - 仅使用 1 个输入通道重新训练 ssd_mobilent_v2

我正在尝试使用 tensorflow 脚本重新训练 ssd_mobilenet_v2: https ://github.com/tensorflow/models/blob/master/research/object_detection/model_main_tf2.py 和默认配置文件: https ://github.com/tensorflow /models/blob/master/research/object_detection/configs/tf2/ssd_mobilenet_v2_320x320_coco17_tpu-8.config

但我想在拜耳图像上训练网络(这些图像只有 1 个通道,就像黑白图像一样)。

我不知道要编辑什么以将输入大小从(320x320x3)更改为(320x320x1)。如果有人能给我一些指示,那就太好了。

0 投票
1 回答
191 浏览

tensorflow - Tensorflow 变分自动编码器的自定义训练循环:`tape.gradient(loss, decoder_model.trainable_weights)` 总是返回全无的列表

我正在尝试为由两个独立tf.keras.Model对象组成的变分自动编码器 (VAE) 编写自定义训练循环。这个 VAE 的目标是多类分类。像往常一样,编码器模型的输出作为解码器模型的输入。解码器是循环解码器。同样像往常一样,VAE 中涉及两个损失函数:重建损失(分类交叉熵)和潜在损失。我当前架构的灵感来自这个github上的 pytorch 实现。

问题:每当我使用tape.gradient(loss, decoder.trainable_weights)解码器模型计算梯度时,返回的列表中每个元素只有 NoneType 对象。我假设我在使用 时犯了一些错误reconstruction_tensor,它位于我在下面编写的代码的底部附近。由于我需要进行迭代解码过程,如何在reconstruction_tensor不返回 NoneType 渐变元素列表的情况下使用类似的东西?如果您愿意,可以使用此colab 笔记本运行代码。

为了进一步阐明这个问题中的张量是什么样的,我将说明原始输入、将分配预测“令牌”的零张量,以及基于来自解码器的预测“令牌”对零张量的单次更新:

这是重现问题的代码:

0 投票
0 回答
24 浏览

tensorflow - 通过具有平均神经网络输出的损失函数进行训练

我有一个自定义前馈神经网络,我正在对 (x,y) 网格上的数据进行训练。因此,输入层由 2 个节点组成,只有 1 个输出。我的目标是编码一个损失函数,进一步训练神经网络以支持 y 平均输出随 x 增加。在损失函数中编码这种约束是否有任何最佳实践?

下面我编写了一个最小的工作示例,通过该示例,我在二维网格上任意生成的数据上构建和训练多层感知器。现在的目标是在损失函数 上添加一个约束loss_cond,这有利于在 y 方向上平均时 x 增加的解决方案。一种可推广到任意数量 ( N) 的输入维度的技术N >= 2,例如 (x, y, z, t, ...),它只是有利于随着 x 增加的 y 平均输出是所寻求的目标。欢迎任何和所有的见解。