반응형
def solution(N):
    # write your code in Python 3.6

    binary_num = bin(N)

    arr_ = []

    for i in range(2,len(binary_num)):
        if binary_num[i] == '1':
            arr_.append(i)


    arr2_ = []
    for i in range(0,len(arr_)):
        if i != len(arr_) - 1:
            tmp = arr_[i+1] - arr_[i]
            tmp = tmp - 1
            arr2_.append(tmp)

    if len(arr2_) == 0:
        return 0
    else:
        return max(arr2_)

    pass
반응형

'Codility' 카테고리의 다른 글

Codility - TapeEquilibrium  (0) 2020.04.13
Codility - PermMissingElem  (0) 2020.04.12
Codility - FrogJmp  (0) 2020.04.11
Codility - OddOccurrencesInArray  (0) 2020.04.10
Codility - CyclicRotation  (0) 2020.04.09
반응형

데이터 transform 정의

  • 데이터를 불러오기 전에 정규화에 대한 기준을 설정해준다.
    평균: 0.5, 표준편차: 1.0
import torchvision.transforms as transforms

# Normalize data with mean=0.5, std=1.0
mnist_transform = transforms.Compose([
    transforms.ToTensor(), 
    transforms.Normalize((0.5,), (1.0,))
])

 

 

데이터 불러오기

  • torchvision에 내장되어 있는 MNIST 데이터 불러오기
from torchvision.datasets import MNIST

# download path 정의
download_root = './MNIST_DATASET'

train_dataset = MNIST(download_root, transform=mnist_transform, train=True, download=True)
valid_dataset = MNIST(download_root, transform=mnist_transform, train=False, download=True)
test_dataset = MNIST(download_root, transform=mnist_transform, train=False, download=True)

데이터 로딩

  • DataLoader 활용
from torch.utils.data import DataLoader

# option 값 정의
batch_size = 1

train_loader = DataLoader(dataset=train_dataset, 
                         batch_size=batch_size,
                         shuffle=True)

valid_loader = DataLoader(dataset=test_dataset, 
                         batch_size=batch_size,
                         shuffle=True)

test_loader = DataLoader(dataset=test_dataset, 
                         batch_size=batch_size,
                         shuffle=True)

classes 정의

classes = ('0', '1', '2', '3',
           '4', '5', '6', '7', '8', '9')

이미지 확인해보기

import matplotlib.pyplot as plt
import numpy as np

# 이미지를 보여주기 위한 함수

def imshow(img):
    img = img / 2 + 0.5     # unnormalize
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.show()

# 학습용 이미지를 무작위로 가져오기
dataiter = iter(train_loader)
images, labels = dataiter.next()

print(len(images), len(labels))

# 이미지 보여주기
imshow(torchvision.utils.make_grid(images))
# 정답(label) 출력
print(' '.join('%5s' % classes[labels[j]] for j in range(1)))

합성곱 신경망 정의하기

import torch.nn as nn
import torch.nn.functional as F


class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 3, 2)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(3, 3, 3)
        self.fc1 = nn.Linear(1 * 3 * 5 * 5, 30)
        self.fc2 = nn.Linear(30, 15)
        self.fc3 = nn.Linear(15, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 1 * 3 * 5 * 5)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x


net = Net()

손실함수와 Optimizer 정의하기

  • 교차 엔트로피 손실(Cross-Entropy loss)과 모멘텀(momentum) 값을 갖는 SGD를 사용합니다.
    import torch.optim as optim
    

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)


# 신경망 학습하기

-   이제 재미있는 부분이 시작됩니다. 단순히 데이터를 반복해서 신경망에 입력으로 제공하고, 최적화(Optimize)만 하면 됩니다.  

a = 0
for epoch in range(1): # 데이터셋을 수차례 반복합니다.

running_loss = 0.0
for i, data in enumerate(train_loader, 0):
    # [inputs, labels]의 목록인 data로부터 입력을 받은 후;
    inputs, labels = data

    # 변화도(Gradient) 매개변수를 0으로 만들고
    optimizer.zero_grad()

    # 순전파 + 역전파 + 최적화를 한 후
    outputs = net(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

    # 통계를 출력합니다.
    running_loss += loss.item()
    if i % 1000 == 999:    # print every 2000 mini-batches
        print('[%d, %5d] loss: %.3f' %
              (epoch + 1, i + 1, running_loss / 1000))
        running_loss = 0.0
    a = a + 1

    if a == 30000:
        break

print('Finished Training')


# 학습된 모델 저장하기

-   학습한 모델을 저장해보겠습니다.  

PATH = './mnist_net.pth'
torch.save(net.state_dict(), PATH)


# 시험용 데이터로 신경망 검사하기

dataiter = iter(test_loader)
images, labels = dataiter.next()

이미지를 출력합니다.

imshow(torchvision.utils.make_grid(images))
print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(1)))

```

이렇게 하게 되면 Pytorch로 MNIST를 분석할 수 있습니다.

반응형

'IT' 카테고리의 다른 글

Expo.io를 이용한 React native 앱 만들기  (0) 2020.04.14
MacBook에 VM 설치  (0) 2020.04.14
이맥스 사용법  (0) 2020.04.09
angular 4200 포트 강제 종료  (0) 2020.04.09
왕초보 Python - 연습 환경 구축(주피터 노트북)  (0) 2020.04.05
반응형

Python 연습하는 환경으로

 

1. Jupyter notebook을 추천드립니다.

 

Jupyter notebook이란 원래, 데이터 분석하시는 분들이 

한줄 한줄씩 데이터 확인해보고, 분석해나가기 위한 용도로 

 

인터프리터 환경(= 컴파일러 환경의 반대)을 제공합니다.

 

인터프리터 환경: 코드 한줄 한줄씩 실행해가며, 그 결과를 확인하는 것

 

컴파일 환경: 전체 코드를 다 만들어 놓고, 실행하는 환경

 

 

* Jupyter notebook 으로 한줄한줄씩 보시는게 입문자한테는 편하실 거예요.

 

 

# Window 사용자

구글 검색창에 "아나콘다" 라고 치시면 됩니다.

 

그럼 맨 위에 Anaconda Python/R 뭐시기 눌러서

 

 

Python 3.7 version 누르시고, 설치하시면 됩니다.

 

 

 

그리고 설치할때, 중간에 체크박스 잘 확인하세요

 

 

이것 이외에는 그냥 Next 누르셔도 무방합니다. 그리고 마지막에 Finish 누르시면 됩니다.

 

설치 완료 되면, 그 후에 키보드에 Window 버튼 누르시고, 검색창에 Anaconda Navigator 이거 실행시키시면

 

Jupyter Notebook 이 이미 깔려져 있어서, 그거 누르시면 완료!

 

 

 

2. Mac 환경에서는 하나하나 Python, pip 를 하나하나 설치해줘야 한다.

https://datacodingschool.tistory.com/27

 

MacBook 파이썬 설치하기

1. 맥북에는 이미 파이썬이 설치되어 있습니다. command + space 키를 눌러 검색창을 활성화시킨 뒤, terminal이나 iterm을 켜서 >> python -V 명령어를 실행시킵니다. 아마 파이썬 2점대 버전이 설치되어 있지 않..

datacodingschool.tistory.com

위의 링크도 참고하시면 좋습니다~~~~

 

 

Homebrew 라는 것을 구글 창에 입력해서, 설치해준다.(아래 링크를 들어가셔도 됩니다.)

https://brew.sh/index_ko

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

보시면 가운데쯤에

>> /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

명령어를 터미널에다가 입력하셔야 합니다.

 

 

그리고 Command + space 를 눌러 Terminal 을 실행시키고,

terminal에서

 

>> brew -v 

 

이라고 쳐서, Homebrew가 정상적으로 설치되어있는지 확인한다.

그리고 

>> sudo easy_install pip

 

명령어를 통해 pip를 설치한다.

 

그리고

 

>> pip install jupyter

라는 명령어를 통해 jupyter notebook을 설치할 수 있다.

 

 

설치가 완료되면,

 

>> jupyter notebook

 

명령어를 통해 jupyter notebook을 띄울 수 있다.

 

 

Mac에는 기본적으로 Python2.x 가 내장되어 있어서, Python 3.x로 사용하고 싶다면,

 

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

상단의 홈페이지에 들어가서 3점대 버전을 설치해주어야 한다.

 

 

반응형

'IT' 카테고리의 다른 글

Expo.io를 이용한 React native 앱 만들기  (0) 2020.04.14
MacBook에 VM 설치  (0) 2020.04.14
이맥스 사용법  (0) 2020.04.09
angular 4200 포트 강제 종료  (0) 2020.04.09
pytorch로 MNIST 분류하기  (0) 2020.04.06

+ Recent posts