代码之家  ›  专栏  ›  技术社区  ›  john wang

matlab使用可调用的python函数,但需要输入

  •  0
  • john wang  · 技术社区  · 2 年前

    我在Matlab上调用python时遇到了一些问题。这是我的Matlab代码

    clc;clear;
    np = py.importlib.import_module('numpy');
    torch = py.importlib.import_module('torch');
    sbi = py.importlib.import_module('sbi');
    %%
    num_dim = int64(3);
    low = -2*torch.ones(num_dim);
    high = 2*torch.ones(num_dim);
    
    prior = py.sbi.utils.BoxUniform(low, high);
    posterior = py.sbi.inference.base.infer(py.test.simulator, prior, method='SNPE', num_simulations=1000)
    

    我使用的是sbi软件包,你可以在这里找到 https://github.com/mackelab/sbi/tree/bb6150e54a0ba2e7c15432d52f53c130ced2a63c

    下面是我的python测试代码。py

    import torch
    from sbi import utils as utils
    from sbi import analysis as analysis
    from sbi.inference.base import infer
    
    def simulator(parameter_set):
        return 1.0 + parameter_set + torch.randn(parameter_set.shape) * 0.1
    

    当我运行Matlab代码时,它给出了一个错误:Python错误:TypeError:simulator()缺少一个必需的位置参数:“parameter_set”。然而,在sbi的例子中 https://www.mackelab.org/sbi/tutorial/00_getting_started/ ,它似乎不需要模拟器的输入。有人能帮忙吗?

    0 回复  |  直到 2 年前