问题标签 [mxnet-gluon]
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.
deep-learning - MXNet AdamW 优化器
Adam 优化器在与权重衰减一起使用时存在缺陷。2018 年提出了 AdamW 优化器。
在 MXNet 框架(python 实现)中实现 AdamW 有什么标准方法吗?有mxnet.optimizer.Adam
类,但没有类mxnet.optimizer.AdamW
(签入mxnet-cu102==1.6.0
,mxnet==1.5.0
包版本)。
PS 我在 MXNet 论坛和datascience.stackexchange.com上问过这个问题,但无济于事。
mxnet - 使用微调模型进行 GluonCV 推理 - “请确保源网络和目标网络具有相同的前缀”错误
我使用 GluonCV 微调对象检测模型以识别一些自定义类,主要遵循相关教程。
我尝试使用“ssd_512_resnet50_v1_coco”和“ssd_512_mobilenet1.0_coco”作为基础模型,训练过程成功结束(验证数据集的准确率相当高)。
问题是,我尝试使用新训练的模型进行推理,例如:
但我得到了错误:
因此,在 .params 文件和我用于推理的模型中,网络参数的名称似乎不同。具体来说,在.params文件中,网络权重的名称以字符串“ssd0_ssd0_”为前缀,导致调用net.load_parameters时出错。我过去做了几次整个过程都没有问题,有什么改变吗?我在 Ubuntu 18.04 上使用 mxnet-mkl (1.6.0) 和 gluoncv (0.7.0) 运行它。
我尝试通过以下方式加载 .params 文件:
我想修改它并删除导致问题的“ssd0_ssd0_”字符串。我正在尝试浏览字典,但在键之间我只找到了一个:
因此,与错误中指示的略有不同。
无论如何,这种解决问题的方式会有点麻烦,我更喜欢更直接的方式。
yolo - 在 GluonCV 上解冻模型层
我在 GluonCV (mxnet) 上使用 Faster-RCNN、Yolo 和 SSD 模型来预测一些医学图像。但是,由于数据集中的图像数量很少,因此训练结果并不理想。因此,我决定使用迁移学习并使用“reset_class”方法解冻输出层来训练我的模型。但结果仍低于预期。因此,我试图解冻更多层以提高训练结果的准确性,但我找不到任何内置函数来实现这一点。
基本上,我有以下两个问题:首先,是否可以在 GluonCV 上解冻更多层?其次,如果没有,还有其他方法可以用来进一步提高结果的准确性吗?
object-detection - GluonCV 对象检测微调 - 选择修改哪些层(冻结其余层)
我有一个关于使用 GluonCV 微调预训练对象检测模型的过程的问题,如本教程中所述。
据我了解,所描述的过程会修改模型中的所有权重值。我只想微调网络末端的全连接层,并冻结其余的权重。
我假设我应该在创建 Trainer 时指定要修改的参数:
因此,我应该列出我对训练感兴趣的参数,而不是 net.collect_params(),然后正常运行该过程的其余部分。但是,我不知道如何精确隔离这些参数……我尝试打印:
但是,在这个列表中,我不知道哪些对应于最终的 FC 层。有什么建议么?
python - Mxnet,使用 pandas 从 csv 文件加载数据并馈送到 NN 模型
我在正确加载 .csv 文件以用作非常简单的密集 NN 模型的输入时遇到问题。csv 文件包含所有输入特征和一个“目标”列,用作回归的输出。
到目前为止,这就是我正在做的事情:
我收到了错误:
因此,我尝试通过将 np.float64 切换为 np.float32 来转换数据,但我得到:
加载此数据的正确方法是什么?
mxnet - 如何用新课程训练我已经训练过的模型?
我对mxnet 有点陌生,我想问我是否可以执行命令来使用自定义数据集训练我已经训练过的模型。我第一次训练我的模型时只有一个类 ['dog'] 然后在我训练模型之后,我想用一个新的类 'cat' 再次训练它,所以它会像 ['dog', '猫']。这可能吗?提前致谢。
mxnet - 在 Android 上运行 GluonCV 对象检测模型
我需要在 Android 上运行一个自定义的 GluonCV 对象检测模块。
我已经在自定义数据集上微调了模型 (ssd_512_mobilenet1.0_custom),我尝试使用它运行推理(加载训练期间生成的 .params 文件),一切都在我的计算机上运行良好。现在,我需要将其导出到 Android。
我指的是这个答案来弄清楚程序,有3个建议选项:
关于第一个,我将模型转换为 ONNX。但是,为了与 NNAPI 一起使用,需要将其转换为 daq。在存储库中,他们提供了 onnx2daq 的预编译 AppImage 来进行转换,但脚本返回错误。我检查了问题部分,他们报告说“它实际上对所有 onnx 对象检测模型都失败了”。
然后,我尝试了 DLR,因为它被认为是最简单的方法。据我了解,为了将我的自定义模型与 DLR 一起使用,我首先需要使用 TVM 编译它(这也涵盖了链接帖子中提到的第二点)。在 repo 中,他们提供了一个 Docker 镜像,其中包含一些针对不同框架的转换脚本。我修改了“compile_gluoncv.py”脚本,现在我有了:
但是,当我运行脚本时,它会返回错误:
难道我做错了什么?这件事甚至可能吗?
附带说明一下,在此之后,我还需要在 Android 上部署姿势检测模型(simple_pose_resnet18_v1b)和活动识别模型(i3d_nl10_resnet101_v1_kinetics400)。
opencv - MXNetError:ImageRec 需要 opencv 来处理
我正在尝试在 Mxnet 上使用 Nvidia Xavier NX 脚本训练深度学习模型,但一直遇到以下错误,我不确定问题是什么:
它一直说它需要 Opencv,即使我在那里安装了 Opencv 4.5。我在互联网上的其他地方查看,它提到在您的 config.mk 文件上设置 USE_OPENCV = 1 但这并没有什么不同。有人有想法么?谢谢。
python - 在您自己的数据集上微调 SOTA 视频模型 - 手语
作为我大学最后一年项目的一部分,我正在尝试使用 gluoncv API 实现一个符号分类器。
数据集: http: //facundoq.github.io/datasets/lsa64/
我按照您自己的数据集教程上的微调 SOTA 视频模型进行了微调。教程:https ://cv.gluon.ai/build/examples_action_recognition/finetune_custom.html
绘制的图表显示了几乎 90% 的准确率,但是当我进行推理时,即使在我曾经训练过的视频上,我也会错过分类。
所以我被卡住了,你能否提供一些指导来提供任何帮助。
谢谢
我的 I3D 数据加载器:
推理运行:
machine-learning - Gluon-ts:尝试个性化成本函数时的问题
我正在尝试实现自己的成本函数来训练我的模型一个多层感知器,我担心在训练期间我收到以下问题:
检查失败:!AGInfo::IsNone(*i): 无法区分节点,因为它不在计算图中。您需要将 is_recording 设置为 true 或使用 autograd.record() 来保存计算图以供后向使用。如果要对同一个图进行两次微分,则需要将 retain_graph=True 向后传递。
我试过了 :
在hybrid_forward
我调用我的损失函数
我还注意到,当我在不将参数从 mxnet ndarray 转换为 numpy ndarray 的情况下计算损失时,它可以工作,但在我的情况下,这是强制性的,因为我必须执行几个中间计算。