Я пытаюсь построить нейронную сеть с одним нейроном, используя библиотеку pytorch. Это мой код (ошибка внизу)
import numpy as np
import random
import matplotlib.pyplot as plt
x_train = np.array([random.randint(1,1000) for x in range(1000)], dtype = np.float32)
y_train = np.array([int(num*3+1) for num in x_train], dtype = np.float32)
x_test = np.array([random.randint(1,1000) for x in range(1000)], dtype = np.float32)
y_test = np.array([int(num*3+1) for num in x_train], dtype = np.float32)
X_train = torch.from_numpy(x_train)
Y_train = torch.from_numpy(y_train)
plt.figure(figsize = (8,8))
plt.scatter(X_train, Y_train)
plt.show()
X_test = torch.from_numpy(x_test)
Y_test = torch.from_numpy(y_test)
input_size = 1
hidden_size = 1
output_size = 1
learning_rate = 0.1
w1 = torch.rand(input_size, hidden_size, requires_grad = True)
b1 = torch.rand(hidden_size, output_size, requires_grad = True)
for i in range(100):
y_pred = X_train.mm(w1).clamp(min = 0).add(b1)
loss = (Y_train-y_pred).pow(2).sum()
loss.backward()
with torch.no_grad():
w1-=w1.grad*learning_rate
b1 -= b1.grad*learning_rate
w1.grad.zero_()
b1.grad.zero_()
Когда я запускаю этот код, он выдает ошибку времени выполнения:
RuntimeError Traceback (most recent call last)
<ipython-input-84-5142b17ecfff> in <module>
32
33 for i in range(100):
---> 34 y_pred = X_train.mm(w1).clamp(min = 0).add(b1)
35 loss = (Y_train-y_pred).pow(2).sum()
36
RuntimeError: matrices expected, got 1D, 2D tensors at C:\w\1\s\windows\pytorch\aten\src\TH/generic/THTensorMath.cpp:192
Что не так с этой строкой код и как заставить его работать как запланировано.