목록분류 전체보기 (89)
플로라도의 data workout
판다스 데이터프레임의 인덱싱은 크게 세가지 방법이 있다. 1. ' [ ] ' 연산자2. iloc '위치 기반 선택'3. loc '라벨 기반 선택' 1. '[ ]' 연산자 @ka : 칼럼지정 연산자, 행 슬라이싱, 불리언 인덱싱데이터프레임에 ' [ ] ' 연산자를 적용, df ['column_name'] 와 같이 사용하는 것은 기본적으로 여느 다른 클래스와 마찬가지로 매직 메서드인 '__getitem__'에 의해 구현되어 있다. - 열 선택 df['column_name'] - 슬라이싱을 통한 행 선택df[2:5] 이때 유의점1은 df[3] 과 같이 단일 정수값으로 행을 선택하려고 들면 에러가 난다는 점이다. 데이터 프레임에서 ' [ ] ' 연산자는 '칼럼 지정 연산자'로 작동하며, 열 이름 자체가 '..
딥러닝에서 대규모의 모델을 다룰수록 scratch부터 모델을 학습시키는 경우는 잘 없고,기존의 대규모 데이터셋과 GPU Cluster로부터 사전에 학습된 pre-trained 모델을 활용하여 모델링을 하는 경우가 대부분이다. 그 활용 방법이 바로 Transfer Learning과 Fine-tuning이다.Transfer Learning과 Fine tuning은 서로 연관되어 있지만 사용 방식과 사용 맥락에 약간의 차이가 있다. Transfer Learning(전이학습)전이학습(Transfer Learning)은 한 도메인 또는 다른 task에서 학습된 모델을 취하여 다른 도메인이나 task에 적용하는 방식이다.예를 들어, 이미지넷으로 사전 훈련된 모델(ImageNet 21k분류를 위한 모델)을 새로운 ..
이번 강은 Attention에 대해서 다룬다. 지난 시간에는 새로운 구조의 NeuralNet인 RNN에 대해서 배웠다. RNN은 서로 다른 시퀀스의 벡터를 다룰 수 있는 강력한 신경망 구조였다.MLP와 같은 일반적인 Feedforward neural network(순방향 신경망)에서 Recurrent Neural Networks(순환 신경망)로 오면서 우리는 machine translation, image captioning과 같은 다양한 테스크를 해결할 수 있게 되었다. 지난 시간의 내용을 다시 한번 떠올려보자.sequence to sequence with RNN의 문제는 무엇이었을까RNN은 $x_1$에서 $x_T$까지의 sequence를 입력으로 받는다. output은 $y_1$에서 $y_{T^`..
딥러닝 모델들의 논문을 보다 보면 벤치마크 표에서 제시되는 것이 크게 네가지가 있는데, 학습 방법및 하이퍼파라미터 튜닝과 모델 버전에 따른(1)모델의 이름,그리고 task에 해당하는 성능지표를 통해 측정한 (2)정확도와(3)파라미터의 갯수, (4)FLOPs 가 그것이다. 모델의 정확도와 효율성은 일반적으로 trade-off관계에 있기 때문에, 정확도 뿐만 아니라 파라미터의 갯수와 FLOPs로 모델의 효율성을 같이 나타내려고 한다.이 때 모델의 효율성은 파라미터의 갯수와 FLOPs 두가지로 나타내게 되는데 파라미터의 갯수는 모델의 가중치(weight)와 bias term을 모두 포함한 수를 의미하고, 대게는 모델의 capacity를 의미하며 모델의 학습관점에서는 VRAM과 직접적으로 연관되는 부분이다. ..
파이토치에서 torch.nn.functional모듈은 통상 F로 임포트하여 사용되곤하는데이때 nn모듈의 클래스들과 비교가 된다. 예를 들면, F.avg_pool2d와 nn.AvgPool2d는 정확히 동일한 기능을 제공하지만, 두 함수의 사용 방법과 적용하는 컨텍스트에는 차이가 있다. 1.F.avg_pool2d- 모듈 : torch.nn.functional - 특징 : 1. 매 호출마다 풀링 파라미터를 지정해야 하므로, 동적인 풀링 사이즈나 조건에 따른 풀링을 적용해야 할때 사용한다. 2. 함수형 API를 사용하므로, 코드에서 '절차적' 접근을할때 적합하다. 3. 상태가 없는 절차적 함수이므로 nn.Sequential의 구성요소로 추가될 수 없다. - 사용 예import torchimport torch..
torchivsion의 pre-trained된 Resnet18, Resnet50과 같은 모델의 가장 마지막단에는 Global Average Pooling을 사용하여 Linear Classifier의 역할을 대체하고 있다. Global Average Pooling의 아이디어는 Resnet뿐만 아니라 많은 딥러닝 아키텍쳐에서 쓰이는데 파이토치에서 제공하는 pooling layer에는 별도의 global average pooling layer가 없다. 그러나 기존의 average pooling 2d와 adaptive_avg_pool2d로 gap를 간단히 구현할 수 있었다. import torchimport torch.nn.functional as F# 임의의 텐서를 생성;: 배치 크기 1, 10개의 채널, 2..
데이콘의 지난 대회에 submission을 제출하며 테스트하던 중에 '기타 제출값 Error가 발생하였습니다.'를 마주하였다.원인은 제출하려고 하는 submission.csv 파일에 예측치로 Null값이 포함되어 있었기 때문이었다. # DataFrame의 index와 칼럼인 'label'이 모두 '가'라는 값(value)로 설정됨submit[~cond]['label'] = '가' # loc를 사용하여 조건에 해당하는 행을 인덱싱하여야 한다.submit.loc[~cond, 'label'] = '가' 따라서 Null이 포함된 행에는 Null값 대신 임의의 예측값인 '가'를 채워넣어주는 방식으로 submission파일을 수정하려고 하였다. 그런데 첫번째 코드를 보면, DataFrame의 index와 칼럼인..