问题标签 [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.
pytorch - 如何在训练期间更改/重置单个神经元
我想测试在训练期间随机重置某些神经元的影响是什么,在一个基于 Pytorch 的模型中,它具有多个线性层,如下所示:
理想情况下,我想实现一个函数/代码片段,在每个时期开始时重置每一层中 1 个或多个随机神经元的权重。
我尝试通过调用参数或 state_dict 来实现此功能,但到目前为止,我在尝试此操作时仅获得许可和异常错误。我也不确定这是否应该在模块本身或培训部分实现。
任何建议都将受到高度欢迎!
computer-vision - 从头开始训练网络的准确性极差
我正在尝试使用类似于 ImageNet 的数据集从头开始重新训练 resnet50。我写了以下训练循环:
但是我的训练和验证准确性极差,如下所示:
谷歌搜索后,我发现从头开始训练的准确度通常不会那么差(实际上它们从大约 40% - 50% 开始)。我发现很难理解故障可能在哪里。如果有人可以帮助我找出我可能出错的地方,那就太好了。
谢谢
json - 如何将多边形 json 转换为图像蒙版进行图像分割?
我目前正在做一个图像分割项目,我正在使用 Labelbox 来注释我的训练/验证集。
标记后,导出会提供一个 JSON 元数据文件。
如何将此 JSON 文件转换为掩码?这里的想法是拥有成对的图像和掩码,然后进行模型训练。
编辑 :
Labelbox 导出具有以下结构:
例如,我想提取 LabelIDs 图像,这样我就可以拥有与 CamVid 相同的数据集结构。
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 进行整个训练,我看不到任何方法。
这是完整的代码。
类定义:
训练单元:
python - ValueError:[E024] 找不到监督解析器的最佳移动。在使用 Spacy v3.x 训练自定义 NER 时
在使用 spacy v3.x 训练我的自定义 NER 模型时,
它把我抛到了错误之上。
" ValueError("[E024] 找不到监督解析器的最佳移动。通常,这意味着无法以有效且满足 GoldParse 中指定的正确注释的方式更新模型。"
为了将我的 json 数据转换为新的 Spacy v3.x 推荐格式,我使用了这段代码
我该怎么办?提前致谢
配置文件
python - 如何检查自定义训练循环之前/之后 Keras 模型的可训练权重是否发生变化
我正在尝试验证自定义训练循环是否会更改 Keras 模型的权重。我目前的方法是deepcopy
在model.trainable_weights
训练前列出清单,然后与训练后进行比较model.trainable_weights
。这是进行这种比较的有效方法吗?我的方法的结果表明权重确实发生了变化(无论如何这是预期的结果,因为每个时期的损失明显减少),但我只是想验证我正在做的事情是有效的。下面是稍微改编的Keras 自定义训练循环教程中的代码,以及我用来比较模型训练前后权重变化的代码:
python - 当我在自定义循环中使用 keras 回调时,日志字典是否仍作为输入传递?
我正在训练我的模型,并编写了一些Keras
自定义回调,我将它们包装在 a 中tf.keras.callbacks.CallbackList
并使用.on_train/epoch/batch_begin/end()
函数调用。这些函数有两个参数epoch/batch
和logs
,它是一个字典,其中包含一些您可以设置的临时值,据我所知,使用高级model.compile()
和model.fit()
,当然我不能在这里使用。我的问题是:这个字典是否仍然使用自定义回调和循环创建,如果是,我如何更新,比如说,logs["loss"]
在其他回调中找到更新的值?
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)。如果有人能给我一些指示,那就太好了。
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 笔记本运行代码。
为了进一步阐明这个问题中的张量是什么样的,我将说明原始输入、将分配预测“令牌”的零张量,以及基于来自解码器的预测“令牌”对零张量的单次更新:
这是重现问题的代码:
tensorflow - 通过具有平均神经网络输出的损失函数进行训练
我有一个自定义前馈神经网络,我正在对 (x,y) 网格上的数据进行训练。因此,输入层由 2 个节点组成,只有 1 个输出。我的目标是编码一个损失函数,进一步训练神经网络以支持 y 平均输出随 x 增加。在损失函数中编码这种约束是否有任何最佳实践?
下面我编写了一个最小的工作示例,通过该示例,我在二维网格上任意生成的数据上构建和训练多层感知器。现在的目标是在损失函数 上添加一个约束loss_cond
,这有利于在 y 方向上平均时 x 增加的解决方案。一种可推广到任意数量 ( N
) 的输入维度的技术N >= 2
,例如 (x, y, z, t, ...),它只是有利于随着 x 增加的 y 平均输出是所寻求的目标。欢迎任何和所有的见解。