본문 바로가기
Dev/Deep Learning

Pytorch-Simple learning

by wenect 2024. 1. 26.

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' 카테고리의 다른 글

TensorFlow 2.x - Simple learning  (0) 2024.01.26
Keras-simple deep learning  (0) 2024.01.23

댓글