반응형

Python 266

[PyTorch] ShuffleSplit와 subset 함수를 사용하여 dataset 분할하기

안녕하세요! 이번 포스팅은 sklearn 패키지에서 제공하는 ShuffleSplit과 torch.utils.data의 Subset 함수를 사용하여 데이터셋을 분할하도록 하겠습니다. shufflesplit 함수는 데이터셋 인덱스를 무작위로 사전에 설정한 비율로 분할합니다. 즉, 4:1 로 분할하고 싶은 경우에 무작위 인덱스로 4:1 비율로 분할합니다. subset 함수로 데이터셋을 생성하면 부모 set이 업데이트(transformation)된 경우에 subset도 함께 업데이트 됩니다. 제가 사용하는 데이터셋은 999개의 이미지로 구성됩니다. train 0.8, test 0.2로 분할하겠습니다. # split the data into two groups # trian 0.8, test 0.2 from sk..

[PyTorch] skimage모듈 mark_boundaries 함수를 사용하여 segmentation 경계 표시하기

안녕하세요! 이번 포스팅에서는 skimage 모듈의 mark_boundaries 함수를 사용하여 senmentation 경계 표시하는 법을 살펴보겠습니다 ㅎㅎ ! mark_boundaries 함수를 사용하면, 이미지와 마스크 파일을 하나로 결합하여, 이미지 내에서 마스크 경계 부분만 표시합니다. 아래 사진이 예시입니다 ㅎㅎ 우선 필요한 라이브러리를 import 합니다. import os import numpy as np import matplotlib.pyplot as plt from PIL import Image from scipy import ndimage as ndi from skimage.segmentation import mark_boundaries 데이터 셋을 다운로드 받습니다. https:/..

Google Colab에 파일 업로드하기

안녕하세요! 이번 포스팅에서는 Google Colab에 파일 업로드 하는 방법을 살펴보겠습니다. 자꾸 까먹어서 기록합니다 ㅎㅎ!! 우선, 파일을 저장하고 싶은 디렉토리로 이동합니다. 저는 root 디렉토리에 data 디렉토리를 생성하여 해당 디렉토리에 파일을 업로드 하겠습니다. cd /root !mkdir data cd /root/data/ 디렉토리를 생성했고, 해당 디렉토리로 이동했습니다. 이제 파일을 업로드 하겠습니다. from google.colab import files file_uploaded = files.upload() 위 코드를 실행하면 아래와 같은 창이 나옵니다. 파일 선택후 업로드하면 됩니다 ㅎㅎ

[PyTorch] Albumentations 모듈 사용해서 이미지 transformation 적용하기.

안녕하세요 ㅎㅎ 오늘은 Albumentations 모듈을 사용해서 이미지 transformation을 정의하고, 데이터셋에 적용하겠습니다. Albumentations 모듈은 torchvision.transformer 보다 빠르게 작동하며, object detection task에서 이미지를 transform 적용하면 바운딩 박스도 함께 transform 되도록 할 수 있습니다. 즉, 아주 아주 편리합니다 ㅎㅎ 우선 albumentations 모듈을 설치합니다. # install transformation package !pip install -U albumentations 커스텀 데이터셋을 생성합니다. 저의 경우에는 VOC dataset을 사용했습니다. class VOCDataset(Dataset): d..

[PyTorch] 가중치 초기화 함수 정의하고 모델에 적용하기

안녕하세요! 가중치 초기화 함수를 정의하고 모델에 적용해보도록 하겠습니다. 자꾸 까먹어서 작성합니다ㅎㅎ! 가중치 초기화 함수를 정의하는 방법은 (1) 모델 구현 코드 내에 가중치 초기화 함수 정의하여 사용하기, (2) 모델을 생성한 뒤에 가중치 초기화 함수 정의하여 사용하기. 두 가지 방법이 있습니다. 개인적으로 (2) 번 방법이 편하여 2번 방법을 작성하겠습니다. 우선 구현한 모델을 생성해야 합니다. 저는 현재 gan을 공부하는 중이므로 discriminator, generator 두 개를 구현했습니다 ㅎㅎ model_dis = Discriminator().to(device) model_gen = Generator(params).to(device) 가중치 초기화 함수를 정의합니다. 값은 제가 임의로 설..

[백준 파이썬] 11047번 동전

백준 11047번 동전 www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 파이썬 풀이 n, k = map(int,input().split()) # 동전 수, 가치 arr = [] # 동전 가격 입력 for i in range(n): arr.append(int(input())) count = 0 # 필요한 동전 수 i = n-1 # arr 마지막 부터 탐색 while i >= 0: if k >= a..

Python/백준 2021.05.12

[백준 파이썬] 11399번 ATM

백준 11399번 ATM www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 파이썬 풀이 n = int(input()) # 사람 수 arr = list(map(int,input().split())) # 인출 시간 arr.sort() # 정렬 result = 0 for i in range(1,n): arr[i] += arr[i-1] # 인출 시간 갱신 print(sum(arr))

Python/백준 2021.05.12

[백준 파이썬] 2839번 설탕 배달

백준 2839번 설탕 배달 www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 파이썬 풀이 n = int(input()) # 설탕 result = 0 # 봉지 수 while n >= 0: if n % 5 == 0: # 5로 나눈 나머지가 0인 경우 result += n // 5 # 5로 나눈 몫 추력 print(result) break n -= 3 # 설탕이 5의 배수가 될때까지 반복 result += 1 # 봉지 추가 else: print(-1) # while문이 거짓이..

Python/백준 2021.05.12

[백준 파이썬] 14502번 연구소 - DFS, 브루트 포스

14502번 연구소 - DFS, 브루트 포스 www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 파이썬 풀이 import sys import copy sys.setrecursionlimit(10**6) input = sys.stdin.readline N, M = map(int,input().split()) graph = [list(map(int,input().split())) for _ in range(N)] # 그래프 생성 graph_copy = copy.deepcopy(..

Python/백준 2021.05.06

[백준 파이썬] 11724번 연결 요소의 개수

백준 11724번 연결 요소의 개수 www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 파이썬 풀이 import sys import collections sys.setrecursionlimit(10**6) input = sys.stdin.readline N, M = map(int,input().split()) graph = collections.defaultdict(list) # 빈 그래프 생성 vi..

Python/백준 2021.05.06
반응형