[프로그래머스] / [Level 2] / [Python] 연속된 부분 수열의 합
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(sequence, k): answer = [] s = 0 e = 0 l = len(sequence) sum_ = 0 while True: if sum_ = l: break sum_ += sequence[e] e += 1 else: sum_ -= sequence[s] if s >= l: break s += 1 answer = sorted(answer, key=lambda x..
[프로그래머스] / [Level 1] / [Python] 가장 가까운 같은 글자
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import defaultdict def solution(s): answer = [] d = defaultdict(lambda: -1) for idx, s_ in enumerate(s): if d[s_] == -1: answer.append(-1) d[s_] = idx else: answer.append(idx-d[s_]) d[s_] = idx return answer
[프로그래머스] / [Level 1] / [Python] 푸드 파이트 대회
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/134240?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(food): answer = [] for idx, num in enumerate(food): if idx == 0: continue for _ in range(num//2): answer.append(str(idx)) answer.append(str(0)) return ''.join(answer) + ''.join(answer[-2::-1])..
[SegNet] A Deep ConvolutionalEncoder-Decoder Architecture for ImageSegmentation
·
Paper Review
SegNet논문 저자는 도로를 달리면서 촬영한 영상(Road Scene)의 Semantic Segmentation을 수행하기 위해 모델은 조금 더 class에 대해 빠르고 정확하게 구분해야 한다고 말합니다. 이를 논문 저자는 다음과 같은 Architecture로 해결하였습니다. Architecture크게 Encoder와 Decoder로 나뉘는데 Encoder는 VGG16에서 FC Layer를 제외한 13개의 Layer를 사용하였고, Decoder는 Encoder를 뒤집은 구조로 볼 수 있습니다. DeConvNet 중간의 Conv, Deconv 를 제거하고 Deconvolution 대신 Convolution을 사용하였고, FC Layer를 제거하여 파라미터 수를 크게 줄였으며, 이로 인해 메모리의 효율성을..
[Python] / [nohup] .py 백그라운드 실행
·
Python/Setting
filename.py 파일을 실행할 때 컴퓨터를 종료하게 되면 이 실행 파일도 종료됩니다. 이를 백그라운드에서 실행하여 컴퓨터를 종료하더라도 계속해서 실행할 수 있는 명령어가 있어서 소개하겠습니다. nohup 사용법은 매우 간단합니다. CLI로 .py를 실행할 때 앞에 nohup을 붙여주기만 하면 됩니다. nohup python test.py & 이때 실행 log의 경우 nohup.output에 기록되며 다음 명령어로 생략 가능하다. nohup python test.py & > /dev/null 프로세스 종료 백그라운드에서 해당 파일을 실행하기 때문에 GUI 환경에서 편하게 프로세스를 종료할 수 없습니다. 따라서 PID를 찾아 직접 종료시켜줘야하는 약간의 번거로움이 있습니다. 먼저, ps -ef 명령어를..
[DeConvNet] Learning Deconvolution Network for Semantic Segmentation
·
Paper Review
DeConvNet앞서 설명한 FCN의 한계점으로, 큰 Object의 경우 전체가 아니라 일부분만 정답으로 예측하여 같은 Object여도 다른 Object로 예측하고 작은 Object의 경우 아예 무시하는 문제와 Object의 디테일한 모습이 사라지는 문제를 가지고 있습니다.논문의 저자는 이러한 문제를 고정된 Receptive Field와 단순한 Deconvolution(Transposed Convolution) 때문이라 하였고 이를 DeconvNet을 통해 해결하였습니다.ArchitectureDeconvNet의 구조는 크게 Convolution Network(Encoder)와 Deconvolution Network(Decoder) 부분으로 구성되어 있으며, 대칭적인 특징을 가지고 있습니다. Encoder..
HDF5 (Hierarchical Data Format 5) - h5py 사용
·
ML & DL/Practice
HDF5 HDF란, 대용량의 데이터를 저장하기 위한 파일 형식으로, 구조화된 배열 데이터를 저장하기에 용이하다. 운영체제의 제약을 거의 받지 않고, 대용량 데이터를 빠르게 저장하고, 쉽게 접근할 수 있게 해주는 고성능 데이터 포맷 형식이다. HDF5를 사용하는 이유 특정 데이터 subset을 처리하기 위해서 전체 데이터셋을 RAM에 읽지 않아, 아주 효율적으로 데이터를 처리할 수 있다. 다른 타입들을 가진 데이터들을 HDF5라는 하나의 파일 안에 저장할 수 있다. h5py python에서는 h5py 라이브러리로 HDF5 파일을 쉽게 다룰 수 있다. [docs] 위에서 HDF5를 사용하는 이유에서 설명했듯이, 위 그림의 오른쪽 부분 처럼 HDF5는 임의의 데이터를 참조했을 때, 해당 데이터가 메모리에 올라..
[Pytroch] Multi GPU Training
·
ML & DL/PyTorch
Data Parallel (DP) 사용법 ... model = resnet18().to(device) model = torch.nn.DataParallel(model) ... 장점 위 예시처럼 매우 간단하게 사용이 가능하다 단점 메모리 사용량 증가 : 각 GPU에서 모델의 복사본을 만들어 메모리를 사용하기 떄문에 GPU의 수가 증가할 수록 메모리 사용량이 증가 통신 병목 현상 : 각 GPU에서 연산을 수행하고 연산 결과를 하나의 GPU로 모은 후에 모델을 업데이트 하기 때문에 GPU간 데이터를 복사하고 통신하는 데 시간이 소요된다. 또한, 하나의 GPU로 연산 결과를 모으기 때문에 GPU 수가 증가할 수록 하나의 GPU의 메모리 사용량이 증가해 효율적인 사용이 불가능하다. 참고 train 할 때 DP를 ..
욱근욱
개미는 오늘도 열심히 일을하네