반응형

전체 글 823

[PyTorch] dataset 분할하기

이번 포스팅에서는 10개의 카테고리을 지닌 데이터셋을 각 카테고리간 동일한 비율로 데이터를 갖도록 분리해보겠습니다. 사용하는 데이터셋은 STL-10 dataset입니다. STL-10 dataset은 10개의 카테고리로 이루어져 있으며, train과 test dataset을 제공합니다. val dataset을 제공하지 않기 때문에 test dataset을 분할하여 val dataset을 만들어보도록 하겠습니다. 작업 환경은 colab에서 진행했습니다. 분할에 이용하는 함수는 sklearn 모듈의 StratifiedShuffleSplit 함수입니다. STL-10 dataset 불러오기 파이토치의 torchvision 패키지에서 제공하는 STL-10 dataset을 불러옵니다. STL-10 dataset은 9..

[논문 읽기] ResNet(2015) 리뷰

이번에 읽어볼 논문은 ResNet, 'Deep Residual Learning for Image Recognition' 입니다. ResNet은 residual repesentation 함수를 학습함으로써 신경망이 152 layer까지 가질 수 있습니다. ResNet은 이전 layer의 입력을 다음 layer로 전달하기 위해 skip connection(또는 shorcut connection)을 사용합니다. 이 skip connection은 깊은 신경망이 가능하게 하고 ResNet은 ILSVRC 2015 우승을 했습니다. Plain Network의 문제점 Plain network는 skip/shortcut connection을 사용하지 않은 일반적인 CNN(AlexNet, VGGNet) 신경망을 의미합니다..

[파이썬 알고리즘 인터뷰] 22. 일일 온도

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 22. 일일 온도 리트코드 739. Daily Temperatures 문제입니다. leetcode.com/problems/daily-temperatures/ 풀이 stack에 인덱스를 저장하고 현재 인덱스에 해당하는 온도가 stack[-1] 인덱스에 해당하는 온도보다 크면 stack에서 값을 꺼내서 인덱스 차이를 계산합니다. def dailyTemperatures(self, T): answer = [0] * len(T) stack = [] for i, t in T: while stack and T[stack[-1]] < t: last = stack.pop() a..

Python/알고리즘 2021.02.24

[PyTorch] convolutional layer 출력 크기 계산하는 함수 만들기

CNN 모델을 구축하다보면 conv layer의 출력값 계산을 실수하여 모델이 오류가 발생하는 경우가 종종 있습니다. 실수를 방지하기 위해 conv layer의 출력값을 계산해주는 함수입니다. import torch.nn as nn import numpy as np # define the helper function def findConv2dOutShape(H_in, W_in, conv, pool=2): # get conv arguments kernel_size = conv.kernel_size stride = conv.stride padding = conv.padding dilation = conv.dilation H_out = np.floor((H_in + 2*padding[0] - dilation[..

[PyTorch] 암 이미지로 커스텀 데이터셋 만들기(creating custom dataset for cancer images)

kaggle에 있는 Histopathologic Cancer Detection 대회에서 제공하는 Histopathologic cencer 이미지로 커스텀 데이터셋(custom dataset)을 만들어보도록 하겠습니다. histopathologic cencer 이미지는 종양이 있는 경우 1, 없는 경우 0 두 가지로 분류되는 이진 분류 문제입니다. 우선, kaggle에서 제공한 데이터 레이블을 확인해보겠습니다. 구글 코랩을 사용했습니다. import pandas as pd path2csv = '/content/cookbook/MyDrive/data/train_labels.csv' labels_df = pd.read_csv(path2csv) labels_df.head() id 는 이미지의 이름을 의미합니다...

[파이썬 알고리즘 인터뷰] 21. 중복 문자 제거

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 21. 중복 문자 제거 리트코드 316. Remove Duplicate Letters 문제입니다. leetcode.com/problems/remove-duplicate-letters/ 풀이 def removeDuplicateLetters(self, s): stack,seen,counts = [], set(), collections.Counter(s) for char in s: counts[char] -= 1 while stack and char 0: seen.remove(stack.pop()) se..

Python/알고리즘 2021.02.22

[파이썬 알고리즘 인터뷰] 20. 유효한 괄호

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 20. 유효한 괄호 리트코드 20. Valid Parentheses 문제입니다. leetcode.com/problems/valid-parentheses/ 풀이 매핑 테이블을 만들어 놓고 테이블에 존재하지 않으면 푸시하고, 팝했을 때 결과가 일치하지 않으면 False를 리턴하도록 구현한 풀이입니다. def isValid(self, s): table = { ')':'(', ']':'[', '}':'{', } stack = [] for char in s: if char not in table: stack.append(char) elif not stack or tabl..

Python/알고리즘 2021.02.21

[자료구조] 스택을 알아보고 연결 리스트로 스택 ADT 구현하기

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 스택(Strack) 스택은 LIFO(Last In First Out, 후입선출)로 처리됩니다. 잔뜩 쌓아둔 접시를 떠올려보겠습니다. 마지막에 쌓은 접시가 맨 위에 놓일 것입니다. 그리고 가장 마지막에 쌓은 접시를 제일 먼저 꺼내게 됩니다. 스택도 마찬가지로 가장 마지막에 쌓은 데이터를 제일 먼저 꺼냅니다. 파이썬은 스택 자료형을 별도로 제공하지는 않지만, 리스트가 사실상 스택의 모든 연산을 지원합니다. 스택은 다음과 같은 2가지 주요 연산을 지원하는 요소의 컬렉션으로 사용되는 추상 자료형입니다. push(): 요소를 컬렉션에 추가합니다. pop(): 아직 제거되지 않은 가장 최근에 삽입된 요소를 제거합니다..

Python/알고리즘 2021.02.19

[파이썬 알고리즘 인터뷰] 16. 두 수의 덧셈

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 16. 두 수의 덧셈 리트코드 2. Add Two Numbers 문제입니다. 풀이 def addTwoNumbers(self, l1, l2): root = head = ListNode(0) carry = 0 while l1 or l2 or carry: sum = 0 if l1: sum += l1.val l1 = l1.next if l2: sum += l2.val l2 = l2.next carry, val = divmod(sum + carry,10) head.next = ListNode(val) head = head.next return root.next

Python/알고리즘 2021.02.19

[파이썬 알고리즘 인터뷰] 17. 페어의 노드 스왑

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 17. 페어의 노드 스왑 리트코드 24. Swap Nodes in Pairs 문제입니다. 풀이 1. 노드의 값만 변경하는 풀이입니다. def swapPaires(self, head): node = head while node and node.next: node.val, node.next.val = node.next.val, node.val node = node.next.next return head 2. 반복 구조로 스왑하는 풀이입니다. def swapPairs(self, head): prev = root = head prev.next = head while h..

Python/알고리즘 2021.02.19
반응형