text: Define the neural network\nclass SingleNeuron(nn.Module):\n    def __init__(self):\n        super(SingleNeuron, self).__init__()\n        self.linear = nn.Linear(1, 1)\n        \n    def forward(self, x):\n        return self.linear(x)\n\n# Create the synthetic data\nx_train = torch.tensor([[1.0], [2.0], [3.0], [4.0]], dtype=torch.float32)\ny_train = torch.tensor([[2.0], [4.0], [6.0], [8.0]], dtype=torch.float32)\n\n# Create the neural network\nmodel = SingleNeuron()\n\n# Define the loss function and optimizer\ncriterion = nn.MSELoss()\noptimizer = optim.SGD(model.parameters(), lr=0.01)\n\n# Train the neural network\nfor epoch in range(1, 1001):\n    # Forward pass\n    y_pred = model(x_train)\n    \n    # Compute loss\n    loss = criterion(y_pred, y_train)\n    \n    # Backward pass and optimization\n    optimizer.zero_grad()\n    loss.backward()\n    optimizer.step()\n    \n    # Print the loss every 100 epochs\n    if epoch % 100 == 0:\n        print(f"Epoch {epoch}: Loss = {loss.item()}")\n\n# Make a prediction for x = 5\nx_test = torch.tensor([[5.0]], dtype=torch.float32)\ny_pred = model(x_test)\ny_pred.item()'}