Я использую GPyTorch для подгонки модели регрессии гауссовского процесса (прежде всего для процесса обучения).Следуя их руководству, я пытаюсь использовать SpectralMixtureKernel
.Однако я получаю следующую ошибку.Но сначала вот код (который в основном совпадает с их учебником, но для удобства скопирован здесь):
class ExactGPModel(gpytorch.models.ExactGP):
def __init__(self,train_x,train_y,likelihood):
super(ExactGPModel, self).__init__(train_x,train_y,likelihood)
self.mean_module = gpytorch.means.ConstantMean()
self.covar_module = gpytorch.kernels.SpectralMixtureKernel(num_mixtures=4)
self.covar_module.initialize_from_data(train_x, train_y)
def forward(self,x):
mean_x = self.mean_module(x)
covar_x = self.covar_module(x)
return gpytorch.distributions.MultivariateNormal(mean_x,covar_x)
pandas dataframe преобразован в torch.tensor
ниже
train_x = torch.tensor(train_x.values.astype(np.float32))
train_y = torch.tensor(train_y.values.astype(np.float32))
test_x = torch.tensor(test_x.values.astype(np.float32))
test_y = torch.tensor(test_y.values.astype(np.float32))
Затем
likelihood = gpytorch.likelihoods.GaussianLikelihood()
model = ExactGPModel(train_x,train_y, likelihood)
После запуска последней строки я получаю следующую ошибку:
Traceback (most recent call last):
File "<ipython-input-195-e3bc37af324c>", line 1, in <module>
model = ExactGPModel(train_x,train_y, likelihood)
File "<ipython-input-186-323eff9c5819>", line 7, in __init__
self.covar_module.initialize_from_data(train_x, train_y)
File "/anaconda3/envs/py36/lib/python3.6/site-packages/gpytorch/kernels/spectral_mixture_kernel.py", line 163, in initialize_from_data
self.raw_mixture_scales.data.normal_().mul_(max_dist).abs_().pow_(-1)
RuntimeError: output with shape [4, 1, 1] doesn't match the broadcast shape [4, 1, 33]
Любая помощь для решения этой проблемы будет принята.
Спасибо.