본문 바로가기
AI/AI 부트캠프

[AI 부트캠프] DAY 80 - 딥러닝 프로젝트 5

by HOHHOH 2023. 11. 14.

[오늘의 일지]

딥러닝 프로젝트 - 딥러닝 모델 선정

[상세 내용]

딥러닝 모델 선정

DNN

- 이제 어느 정도 피처에 대한 분석을 마무리하고 학습시킬 모델을 선정했습니다. 우선 가장 기본적인 모델인 DNN을 사용하기로 했습니다. DNN은 MLP의 확장된 형식으로서 히든 레이어가 더 많은 모델이라고 보시면 됩니다. 

class NeuralNetwork(nn.Module):
    def __init__(self):
        super().__init__()
        self.relu_stack = nn.Sequential(
            nn.Linear(len(x_cols), layers[0]),
            nn.ReLU()
        )

        for i in range(len(layers)-1):
            self.relu_stack.append(nn.Dropout(0.25))
            self.relu_stack.append(nn.Linear(layers[i], layers[i+1]))
            self.relu_stack.append(nn.ReLU())
        self.relu_stack.append(nn.Linear(layers[-1],1))

    def forward(self, x):
        output = self.relu_stack(x)
        return output

def init_weights(m):
    if isinstance(m, nn.Linear):
        torch.nn.init.kaiming_normal_(m.weight)
        m.bias.data.fill_(0.01)
        if m.out_features == 1:
            torch.nn.init.xavier_normal_(m.weight)

 

LSTM

- 강사님이 제시해 준 모델은 LSTM이었습니다. 데이터의 구조가 약간 시계열의 특성을 가지고 있어서 추천해 주신 거 같았습니다. 그래서 앞으로 이 두 개의 모델을 학습시켜 보고 더 좋은 성능을 가진 모델로 최종선정할 예정입니다.

class LSTMModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers, output_size):
        super(LSTMModel, self).__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        # Initialize hidden and cell states
        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)
        c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)

        # LSTM forward pass
        out, _ = self.lstm(x, (h0, c0))
        out = self.fc(out[:, -1, :])

        return out

# Hyperparameters
input_size = 17  # Number of features
hidden_size = 50
num_layers = 2
output_size = 1

 

[마무리]

 오늘은 학습할 모델 두 개를 선정했고 간단하게 코드에 대해서 살펴보았습니다. 내일부터는 모델을 학습시키고 하이퍼파라미터도 수정해 가면서 최적의 성능을 낼 수 있도록 실험을 해봐야 될 거 같습니다. 그리고 강사님이 모델에 대해서는 크게 신경 쓰지 않아도 된다고 했습니다. 계속해서 변해가는 모델이 많기 때문에 어떤 원리로 사용되는지 잘 파악하고 있는 것이 중요하다고 했습니다.

반응형

댓글