将 Torch Addin 文件转换为模型把这个放在这里以防有人比我更能理解文档,但我正试图将 torch 插件中的任何模型输出加载到 python 中。有人成功做到了吗?我希望我可以只加载我选择的给定模型的状态字典,但这似乎不起作用。
# %%
from pathlib import Path
import torch
from torchvision.models import efficientnet_b2
# %%
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_path = Path(__file__).parent.parent/"models/VI Models/E353 EffNetB2 MLP DOR20"
model_paths = list(model_path.glob("*v1f1*.pt")) # just pick one model for now
# %%
model = efficientnet_b2(dropout=0.2).to(device)
# %%
model_paths[0].relative_to(model_path) # WindowsPath('tdl_jmp_v1f1_jnet.pt')
# %%
model_part = torch.jit.load(model_paths[0], map_location=device)
model_part
# %%
model.load_state_dict(model_part.state_dict())
# this fails with
# RuntimeError: Error(s) in loading state_dict for EfficientNet:
# Missing key(s) in state_dict: "features.0.0.weight", "features.0.1.weight", "features.0.1.bias", "features.0.1.running_mean", .... very long list
# Unexpected key(s) in state_dict: "0.0.0.weight", "0.0.1.weight", "0.0.1.bias", "0.0.1.running_mean", .... very long list
# %%
自动化和脚本回复:将 Torch Addin 文件转换为模型@vince_faller谢谢你的帖子。之后
model_part = torch.jit.load(model_paths[0], map_location=device)
该模型已准备好预测图像。无需从 torchvision 实例化 efficientnet_b2 并加载 state_dict。即时编译的模型文件包含模型架构和训练后的权重。
设置图像张量后,只需运行 model_part(image)。此后还有三个步骤:池化、嵌入器和最终线性预测器。
我附上了一个端到端示例笔记本和示例图像,包括显示中间输出的步骤。请更改 deploy_image_model.py 上的后缀,以便将文件命名为 deploy_image_model.ipynb
回复:将 Torch Addin 文件转换为模型这与文档中的内容相同,但实际上并没有什么帮助。我们如何从 Addin 对话框的屏幕截图中知道这些是什么。例如,我们如何知道要使用的规范化方法或 imagenet 规范化值?我们如何知道要使用哪个池化器(架构应该在 JIT 中?)?我很困惑你为什么要做 tnet 和 tnet1?只是显示它们匹配?有时你们都使用 1 版本的层,有时你们不使用。
也许我的问题是我得到的只是这些文件和这个截图。

抱歉,我的无知。感谢您的耐心。
回复:将 Torch Addin 文件转换为模型@vince_faller确实有点令人困惑,我们会努力简化它。基本上有四个部分,顺序如下:
1.图像模型:*_jnet.pt模型文件中包含的架构和权重。
2. Pooling:符合 Pooling Layers 规范
3. 表格模型:匹配所有其他参数,最终输出具有维度 embed_size,它是 Layer Sizes 的最后一个值。
4. 最终线性:必须是 nn.Linear(embed_size, y_size),其中 y_size 是正在预测的 Y 的维度。
在每个步骤之后,您应该能够从前一步中获取输入并创建新的输出并逐步建立模型。
如果某些东西没有对齐,查看输出张量的状态字典和维度以查看不匹配的位置并进行相应调整会非常有帮助 - 这就是我们将那些额外的打印输出单元放在示例笔记本中的原因。
如果您有想要看到的新示例,请发送。
回复:将 Torch Addin 文件转换为模型得益于专家们的努力,深度学习在JMP成为可能。
我还想问一个有关 JMP 图像识别的问题,尽管我仍然无法获得 JMP Pro 18 软件:
如果我用来识别它们的图像都是由已知数据表生成的。使用Torch插件进行识别时,可以直接导入原表数据吗?
但我认为通过图像来观察会更好,你明白吗?那有意义吗?
谢谢专家!
回复:将 Torch Addin 文件转换为模型嗨@lala感谢您的提问。我不太明白您所说的“直接导入原始表格数据”是什么意思。如果您指的是从磁盘上的 .png 或 .jpg 文件导入图像,那么使用文件 > 导入多个文件就相当容易了。如果这不是您要问的,请您进一步解释或提供一个小例子,我可以进一步评论。
与此同时,即使没有 JMP Pro 18,从https://community.jmp.com/t5/JMP-Add-Ins/Torch-Deep-Learning-Add-In-for-JMP-Pro/ta-p/733478 (参见右上角附近的链接)下载 Torch_Storybook.jmp,在早期版本的 JMP 中打开它,然后单击感兴趣的各种链接,查看各种示例中如何处理图像数据,也可能会有所帮助。上一页还有一些视频教程的链接,包括一个关于图像分类的视频教程。这些可能有助于回答您的问题。
回复:将 Torch Addin 文件转换为模型谢谢专家的答复。
我想到了一个更直观的例子:
就像每天的股票价格图表一样,它们是由每天“开盘价”、“最高价”、“最低价”、“收盘价”、“成交量”的变化生成的。
可以直接用原始数据的变化规律来预测未来的价格变化,当然也可以利用股价图的不同形态,通过图形识别来预测。
就这样,JMP 18的Torch插件可以直接导入原始股票价格数据进行训练,省略了图像识别的过程。
这两种训练方式有什么区别吗?
非常感谢专家的帮助。
回复:将 Torch Addin 文件转换为模型你好@lala嗯,我相信高级交易员已经尝试了几乎所有可以想象到的预测未来股票价格的方法。
图像是使用像素位置和颜色对数据进行编码的一种特定方式。虽然对图像进行深度神经训练与对表格时间序列特征进行训练肯定不同,但最终两种形式的类似输入数据往往会产生类似的结果。
在 JMP 中使用函数或图像输入对光谱数据进行训练时,我们看到了类似的现象。请参阅 Torch Storybook 中的几个示例。
回复:将 Torch Addin 文件转换为模型感谢专家的完美解答。我首先学习插件示例文件代码。等我拿到 JMP Pro 18 再说。
谢谢专家!