一、问题
看到别人写的一个函数里用了return lambda,刚开始没太搞明白,后来懂了,记录一下。
# 真实样本高斯分布
def get_distribution_sampler(mu, sigma):
return lambda n: torch.Tensor(np.random.normal(mu, sigma, (1, n)))
二、解决方法
其实这个指的就是返回一个函数对象,是这么用的:
d_sampler = get_distribution_sampler(data_mean, data_std)
d_real_data = d_sampler(d_input_size)
先定义一个函数对象d_sampler,传递参数d_input_size就对应lambda函数里的n,d_sampler(d_input_size)对应就是torch.Tensor(np.random.normal(mu, sigma, (1, n)),把这个值赋给d_real_data。