I am going to test my simple linear regression. However I got trouble with my program below:
x_train = x.reshape(-1, 1).astype('float32')
y_train = y.reshape(-1, 1).astype('float32')
class LinearRegressionModel(nn.Module):
def __init__(self, input_dim, output_dim):
super(LinearRegressionModel, self).__init__()
self.linear = nn.Linear(input_dim, output_dim)
def forward(self, x):
out = self.linear(x)
return out
input_dim = x_train.shape[1]
output_dim = y_train.shape[1]
input_dim, output_dim
model = LinearRegressionModel(input_dim, output_dim)
criterion = nn.MSELoss()
[w, b] = model.parameters()
def get_param_values():
return w.data[0][0], b.data[0]
and my definition of graph
def plot_current_fit(title=""):
plt.figure(figsize=(12,4))
plt.title(title)
plt.scatter(x, y, s=8)
w1 = w.data[0][0]
b1 = b.data[0]
x1 = np.array([0., 1.])
y1 = x1 * w1 + b1
plt.plot(x1, y1, 'r', label='Current Fit ({:.3f}, {:.3f})'.format(w1, b1))
plt.xlabel('x (input)')
plt.ylabel('y (target)')
plt.legend()
plt.show()
and I got this error
RuntimeError Traceback (most recent call last)
in ()
1
2
----> 3 plot_current_fit(‘Before training’)
4
in plot_current_fit(title)
6 b1 = b.data[0]
7 x1 = np.array([0., 1.])
----> 8 y1 = x1 * w1 + b1
9 plt.plot(x1, y1, ‘r’, label=‘Current Fit ({:.3f}, {:.3f})’.format(w1, b1))
10 plt.xlabel(‘x (input)’)
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #3 'other
’