Hello.
I have a question in my code.
My code has two input parameter, two hidden layer and one output parameter.
I designed to output 0 or 1.
Is this a problem in my code?
Because, accuracy is very low.
Thank you, reading my code.
import torch
import torch.nn as nn
import torch.optim as optim
from torch.nn import functional as F
import numpy as np
import matplotlib.pyplot as plt
from torch.autograd import Variable
torch.manual_seed(1)
epoch = 10000
learning_rate = 0.1
input_dim = 2
hidden1_dim = 5
hidden2_dim = 3
output_dim = 1
data = np.loadtxt(‘Data_Set.csv’, delimiter=’,’)
x_data = data [:,:2]
y_data = data [:,2]
X_data = []
Y_data = []
for i in range(0, len(y_data)):
x = x_data[i]
y = y_data[i]
#print(x, “->”, y)
X_data.append(x)
Y_data.append(y)
X = torch.FloatTensor(np.array(X_data))
Y = torch.FloatTensor(np.array(Y_data))
fc1 = nn.Linear(input_dim, hidden1_dim)
fc2 = nn.Linear(hidden1_dim, hidden2_dim)
fc3 = nn.Linear(hidden2_dim, output_dim)
relu = nn.ReLU()
sigmoid = nn.Sigmoid()
model = torch.nn.Sequential(fc1, sigmoid, fc2, sigmoid, fc3, sigmoid)
criterion = torch.nn.BCELoss(size_average=True)
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
for step in range(epoch):
optimizer.zero_grad()
hypothesis = model(X)
cost = criterion(hypothesis, Y)
cost.backward()
optimizer.step()
if step % 100 == 0:
    print(step, cost.data.numpy())

predicted = (model(X).data >= 0.5).float()
accuracy = (predicted == Y.data).float().mean()
print("\nHypothesis: ", hypothesis.data.numpy(), "\nCorrect: ", predicted.numpy(), "\nAccuracy: ", accuracy*100, “%”)