import pandas as pd
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
# 데이터 불러오기 및 전처리
data = pd.read_csv('gpascore.csv')
data = data.dropna()
y_data = data['admin'].values
x_data = []
for _, row in data.iterrows():
x_data.append([row['gre'], row['gpa'], row['rank']])
# 텐서로 변환
x_tensor = torch.FloatTensor(x_data)
y_tensor = torch.FloatTensor(y_data)
# 데이터 로더 구성
dataset = TensorDataset(x_tensor, y_tensor)
data_loader = DataLoader(dataset, batch_size=32, shuffle=True)
# 신경망 모델 구성
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(3, 64) # 입력 노드 3개, 출력 노드 64개
self.fc2 = nn.Linear(64, 128) # 입력 노드 64개, 출력 노드 128개
self.fc3 = nn.Linear(128, 1) # 입력 노드 128개, 출력 노드 1개
self.sigmoid = nn.Sigmoid()
def forward(self, x):
x = torch.tanh(self.fc1(x))
x = torch.tanh(self.fc2(x))
x = self.sigmoid(self.fc3(x))
return x
model = Net()
# 모델 학습
criterion = nn.BCELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
for epoch in range(10):
for x_batch, y_batch in data_loader:
optimizer.zero_grad()
y_pred = model(x_batch)
loss = criterion(y_pred.squeeze(), y_batch)
loss.backward()
optimizer.step()
print(f'Epoch {epoch+1}, Loss: {loss.item()}')
# 예측
new_data = torch.FloatTensor([[7500, 3.70, 3], [400, 2.2, 1]])
with torch.no_grad():
predictions = model(new_data)
print(predictions)
'Dev > Deep Learning' 카테고리의 다른 글
Anomalib (1) | 2024.08.18 |
---|---|
이상 탐지 관련 오픈소스 프로젝트들 (0) | 2024.08.18 |
YOLO v10 dot.net Winform Sample (0) | 2024.08.15 |
TensorFlow 2.x - Simple learning (0) | 2024.01.26 |
Keras-simple deep learning (0) | 2024.01.23 |
댓글