- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 s390x 架构上使用预训练的 MXNet 模型,但它似乎不起作用。这是因为预训练的模型是小端的,而 s390x 是大端的。所以,我正在尝试使用 https://numpy.org/devdocs/reference/generated/numpy.lib.format.html它适用于小端和大端。
解决这个问题的一种方法是我发现在 x86 机器上加载模型参数,调用 asnumpy,通过 numpy 保存然后使用 numpy 在 s390x 机器上加载参数并将它们转换为 MXNet。但我不确定如何编码。任何人都可以帮助我吗?
更新
这个问题似乎不清楚。因此,我添加了一个示例,它可以通过 3 个步骤更好地解释我想要做什么 -
net = mx.gluon.model_zoo.vision.resnet18_v1(pretrained=True, ctx=mx.cpu())
gluon.contrib.utils.export(net, path="./my_model")
net = gluon.contrib.utils.import(symbol_file="my_model-symbol.json",
param_file="my_model-0000.params",
ctx = 'cpu')
我想使用 numpy 加载我们在第 2 步中创建的 .npy 文件,而不是使用 MXNet API 加载。加载 .npy 文件后,我们需要将其转换为 MXNet。所以,我终于可以在 MXNet 中使用模型了。
最佳答案
从另一个问题中发布的代码片段开始,Save/Load MXNet model parameters using NumPy :
似乎 mxnet 可以选择将数据在内部存储为 numpy 数组:
mx.npx.set_np(True, True)
不幸的是,这个选项没有达到我希望的效果(我的 IPython session 崩溃了)。
dict
的
mxnet.gluon.parameter.Parameter
实例,每个实例都包含其他特殊数据类型的属性。解决这个问题以便您可以将其存储为大量纯 numpy 数组(或它们的集合在
.npz
文件中)是一项无望的任务。
pickle
将复杂的数据结构转换成或多或少可移植的东西:
# (mxnet/resnet setup skipped)
parameters = resnet.collect_params()
import pickle
with open('foo.pkl', 'wb') as f:
pickle.dump(parameters, f)
恢复参数:
with open('foo.pkl', 'rb') as f:
parameters_loaded = pickle.load(f)
本质上,它看起来像
resnet.save_parameters()
如
mxnet/gluon/block.py
中所定义获取参数(使用
_collect_parameters_with_prefix()
)并使用自定义写入函数将它们写入文件,该函数似乎是从 C 编译的(我没有检查细节)。
pickle
保存参数反而。
load_parameters
(也在
util.py
中)包含此代码(删除了健全性检查):
for name in loaded:
params[name]._load_init(loaded[name], ctx, cast_dtype=cast_dtype, dtype_source=dtype_source)
在这里,
loaded
是从文件加载的字典。通过检查代码,我没有完全掌握正在加载的内容 -
params
似乎是函数中不再使用的局部变量。但值得一试,从这里开始,编写
load_parameters
的替代品。功能。您可以通过在类外定义一个函数,将函数“猴子补丁”到现有类中,如下所示:
def my_load_parameters(self, ...):
... (put your modified implementation here)
mx.gluon.Block.load_parameters = my_load_parameters
免责声明/警告:
pickle
保存/加载要在单个大端系统上工作,不能保证在不同端系统之间工作。 pickle 协议(protocol)本身是 endian-neutral,但是如果浮点值(在 mxnet.gluon.parameter.Parameter
深处)被存储为机器端约定中的原始数据缓冲区,那么 pickle 不会神奇地猜测缓冲区需要反转。我认为 numpy 数组在腌制时是字节序安全的。关于python - 使用 numpy 进行 MXNet 参数序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62796927/
我可以使用诸如 FullyConnected 之类的预构建高级函数来创建模型。 .例如: X = mx.sym.Variable('data') P = mx.sym.FullyConnected(
在 numpy 中,可以使用 np.append() 将元素附加到数组。 尽管 numpy 和 mxnet 数组应该是相似的,但 NDArray 类中没有append() 函数。 更新(18/04/2
在 numpy 中,可以使用 np.append() 将元素附加到数组。 尽管 numpy 和 mxnet 数组应该是相似的,但 NDArray 类中没有append() 函数。 更新(18/04/2
据我们所知,mxnet中有multiplegpu的概念,当在命令中指定-gpu时。如果我们不指定gpu,它将在cpu上运行。它运行多少个cpu?可以指定吗多个 CPU? 最佳答案 您可以通过以下代码使
我正在 MXNet 中编写 C++ 自定义运算符,但无法找到有关何时在运算符调用中设置 kAddTo 的文档。作为一个最小的例子,假设我的新运算符称为 foo(),我想执行以下计算: A = mx.s
如何在 MXNET 中创建自定义损失函数?例如,我不想计算一个标签的交叉熵损失(使用标准 mx.sym.SoftmaxOutput 层计算交叉熵损失并返回一个可以作为损失符号传递给拟合函数的符号),而
我有数百万张图像可供推断。我知道如何编写自己的代码来创建批处理并将批处理转发到使用 MxNet Module API 训练过的网络为了得到预测。然而,创建批处理会导致大量未特别优化的数据操作。 在自己
我正在了解 Mxnet 框架。在关注此 Linear Regression article 时我看到以下代码正在创建一个密集层: net = gluon.nn.Dense(1, in_units=2)
由于没有分步指南来学习如何使用 mxnet 来训练图像分类模型或提高已经存在的模型的准确性,例如,我有 5 个类 iamges,我想训练一个模型可以很好地将这5类东西分类。另外,mxnet 指南找不到
在 MXNet 中,如果我想创建一个权重向量来乘以每个输入,即具有 w*x_i 然后反向传播权重 w 我将如何做这个? 我试过: y_hat = input w1 = mx.sym.Variabl
升级到 MXNet 0.11.0 后,我的旧代码中出现奇怪的错误: 使用 scikit-learn 的波士顿住房数据集: data = mx.sym.Variable("data") y = mx.s
Guon mxnet 教程中的简单示例对于我们这些刚刚开始使用 mxnet 的人来说非常有帮助。到目前为止,还没有一个简单的模型并行示例。我看到 LSTM 的模型并行性示例代码,但我是 mxnet 的
我如何找到 MXNet 符号中保存的实际数值。 假设我有, x = mx.sym.Variable('x') y = mx.sym.Variable('y') z = x + y, 如果 x = [1
我正在使用 MXnet 来训练 CNN(在 R 中),我可以使用以下代码训练模型而不会出现任何错误: model <- mx.model.FeedForward.create(symbol=netwo
TensorFlow 对象检测 API 更喜欢 TFRecord 文件格式。 MXNet 和 Amazon Sagemaker 似乎使用 RecordIO 格式。这两种二进制文件格式有何不同,或者它们
我正在尝试使用其C++ API在Mxnet中实现自定义损失函数。损失函数的问题在python(how to use customized loss function with mxnet?)中已经提出
我无法使用 mxnet 获得合理的性能LinearRegressionOutput层。 下面的独立示例尝试对一个简单的多项式函数 (y = x1 + x2^2 + x3^3) 执行回归,并引入少量随机
在我的问题中,我有一个包含 n 元素的向量。给定窗口大小 k,我想有效地创建一个包含带状对角线的矩阵大小 n x 2k+1。例如: a = [a_1, a_2, a_3, a_4] k = 1 b =
我正在尝试实现mxnet教程in this page ,在计算梯度体面时: def SGD(params, lr): for param in params: param[:] = param
预先感谢您的帮助。 我在让 mxnet 模型收敛到任何东西时遇到一些问题:它似乎接近其初始权重。 一个工作示例(尽管我今天一直在努力让许多这样的模型工作)。我已经尝试了下面的方法,使用了一系列纪元(最
我是一名优秀的程序员,十分优秀!