import torch; print(torch.__version__)
import torch.nn as nn
2.0.0
# Define the neural network architecture
class SimpleNN(nn.Module):
def __init__(self, input_size, output_size):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(input_size, 3)
self.relu1 = nn.ReLU()
self.fc2 = nn.Linear(3, 2)
self.relu2 = nn.ReLU()
self.fc3 = nn.Linear(2, output_size)
def forward(self, x):
x = self.fc1(x)
x = self.relu1(x)
x = self.fc2(x)
x = self.relu2(x)
x = self.fc3(x)
return x
# Set the parameters
input_size = 4 # Number of input features
output_size = 3 # Number of output neurons (binary classification)
# Create the neural network
model = SimpleNN(input_size, output_size)
input = torch.randn(size=(4,))
output = model(input)
output
tensor([-0.5835, 0.2246, -0.0567], grad_fn=<AddBackward0>)
target = torch.tensor([0.0, 0.0, 1.0])
target
tensor([0., 0., 1.])
cross_entropy_loss = nn.CrossEntropyLoss()
loss = cross_entropy_loss(output, target)
loss
tensor(1.0700, grad_fn=<DivBackward1>)
-1.0 * torch.log(torch.softmax(output, dim=-1))[2]
tensor(1.0700, grad_fn=<MulBackward0>)