본문 바로가기

전체 글45

넘파이에서 리스트처럼 곱하기 적용하고싶을때 import numpy as nparr1 = np.array([1])arr2 = np.repeat(arr1, 4)print(arr2) # [1 1 1 1] 2023. 2. 25.
re.search 위치 여러개 찾기 TL;DRimport re[(m.start(0), m.end(0)) for m in re.finditer('match', text)]세부내용re.search를 이용해 내가 찾고자 하는 단어의 위치를 알수있다 하지만 하나밖에 찾지못한다s = 'cat cat cat cant cat'm = re.search('cat', s)print(m.span())>>> (0, 3)re.finditer은 정규식과 매칭되는 모든 문자열을 반복가능한 객체로 return한다for i in re.finditer('python', '3python3, python'): print(i) >>>  출처https://stackoverflow.com/questions/3519565/find-the-indexes-of-all.. 2023. 2. 23.
백준 수찾기(1920번) 파이썬 풀이 전체 코드# 수 찾기N=int(input())A=list(map(int,input().split()))M=int(input())B=list(map(int,input().split()))def is_there(min_idx, max_idx, array, num): middle_idx=(min_idx+max_idx)//2 if (array[middle_idx]==num or array[max_idx]==num) or array[min_idx]==num: print(1) return if max_idx-min_idx==1: print(0) return elif array[middle_idx]num: return.. 2023. 2. 22.
numpy where 기능소개 넘파이 array를 대상으로만 사용가능하다 두가지 기능이있다첫번째 인덱스 반환조건식이 주어졌을때 말그대로 어디(where)있는지 알려준다 (출력이 튜플인건 맘에에 안든다)형식은 np.where(조건) 이며, 조건에 부합하는 인덱스를 출력한다import numpy as nparray=np.arange(17,27)print(array)print(np.where(array>20))>>> [17 18 19 20 21 22 23 24 25 26]>>> (array([4, 5, 6, 7, 8, 9]),)인덱스가 깔끔한 형태로는 출력되지않아 재가공이 필요하다array = np.array( [[ [1001,2],[3,4] ], [ [1087,2],[1,1]] ] )print(array)print(np.where(arr.. 2023. 2. 21.
pytorch summary() 기능 pytorch conv3d모델이다class BaseModel(nn.Module): def __init__(self, num_classes=13): super(BaseModel, self).__init__() # super().__init__()->python 3 에서만 작동 # super(자기자신,self).__init__()->python 2,3 모두 작동 # 성능차이는 없음 self.feature_extract = nn.Sequential( nn.Conv3d(3, 8, (1, 3, 3)), nn.ReLU(), nn.BatchNorm3d(8), nn.Max.. 2023. 2. 21.
Pooling 레이어의 이해 풀링을 왜하는가1. 풀링은 입력이 작게 이동해도 근사적으로 불변이 되게 하는데 도움을 준다2. 데이터 차원의 감소pooling의 커널사이즈를 2*2, stride 2로 설정했을때 최종적인 데이터 크기를 1/4로 줄일수있다일정영역의 강한 피쳐만을 남길수있으며 신경망의 계산이 빨라진다 풀링의  기본설정pooling시 대부분 maxpool을 이용한다stride는 커널사이즈와 동일하게 설정하는것이 default값이다 pooling과 convolution레이어의 차이점학습해야할 가중치가없다풀링후 채널수가 변하지 않는다 pooling의 문제maxpooling으로 일정 영역의 강한 feature만을 다음 레이어로 넘기면 처음에는 적은 계산량으로 좋은 성능을 유지할 수 있을지 몰라도 깊은 레이어로 갈수록 정보유실이 커.. 2023. 2. 21.
패딩(padding) 사용하는 이유 패딩을 이용해 입력데이터를 특정값으로 감쌀수있다 주로 0을 이용한다고 한다패딩을 사용하는 이유는 세가지가 있다 첫번째는 출력크기의 감소를 막기위해서이다 예를들어 (4,4) 입력데이터에 (3,3) 필터를 적용하면 출력은 (2,2)가 되어 입력보다 2만큼 줄어든다이는 합성곱 연산을 몇번이나 되풀이하는 심층 신경망에서는 문제가 될 수 있다 위 그림과 같이 패딩의 폭을 1로 설정하니 (4,4)입력에 대한 출력이 같은 크기인 (4,4)로 유지되어 입력 데이터의 공간적 크기를 고정한 채로 다음 계층에 전달할 수 있다 두번째는외각을 0값으로 둘러싸는 특징으로부터 인공 신경망이 이미지의 외각을 인식하는 학습효과가 있다는 것이다 세번째는가장자리로 갈수록 연산에 이용되는 횟수가 떨어지는 문제점을 어느정도 해결해준다는것이다.. 2023. 2. 21.
합성곱 연산(Convolution operation) 방법 입력값이 커널과의 연산과정을 거쳐 출력값이 된다 커널은 필터라고도 불린다n*m크기의 행렬로 n*m크기의 겹쳐지는 부분의 원소값을 곱한뒤 모두 더한값을 출력으로 갖는다input_=np.array([1,2,3,2,1,0,3,0,1])kernel=np.array([1,0,1,1,0,1,0,1,0])sum(input_*kernel)이미지의 가장 왼쪽 위부터 가장 오른쪽 순차적으로 위과정을 반복한후 마지막으로 편향(bias)를 더해 최종적인 출력(feature map)을 만든다또한 위의 예제에서는 커널의 이동범위가 한칸이었지만 이또한 사용자가 정할수있으며 이러한 이동범위를 stride라고 한다 RGB 3채널의 이미지 한장에서 최종적인 feature map을 얻는 과정은 다음과 같다(보통 rgb값을 permute를.. 2023. 2. 21.
합성곱 신경망의 필요성 합성곱 신경망의 필요성해당 두 손글씨 이미지는 모두 알파벳 Y로 사람은 충분히 인식할수있다기존에는 1차원으로 변환된 결과를 이용했지만 이는 사람이 보기에도 이게 원래 어떤 이미지였는지 알아보기 어렵다이는 기계도 마찬가지이며 변환전에 가지고 있던 공간적인 구조 정보가 유실된상태예를들어 (4,5) 좌표와 (5,5) 좌표는 2차원 평면에서는 인접해있지만 위와같이 1차원으로 펼쳤을때는 매우멀다=>공간정보의 유실  출처https://wikidocs.net/62306 2023. 2. 21.