我在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/
,它似乎不需要模拟器的输入。有人能帮忙吗?