분류 전체보기 428

6. ResNet 논문 리뷰, 구현

이번 포스팅에서는 Deep Residual Learning for Image Recognition 논문을 리뷰해 보겠다. Abstract Deep neural network는 훈련하기 더 어렵다. 논문의 저자들은 residual framework를 이전보다 깊은 network들을 쉽게 훈련시키기 위해 제시했다. 이들은 참조되지 않은 함수를 학습하는 대신 input layer를 기준으로 learning residual functions로 층을 명시적으로 재구성했다. 이들은 포괄적인 경험적 증거를 제공했는데 이러한 residual networks가 최적화 하기 쉽고 상당히 증가된 깊이로부터 accuracy를 얻을수 있다는 것을 보여준다. ResNet 구조는 ILSVRC 2015에서 1등을 차지했다. Intr..

5.Network in Network 논문 리뷰

이번 포스팅에서는 Network in Network 논문을 리뷰해보겠다. Google Net에서 NIN모델을 이용했다는데 이 점이 궁금하여 이 논문을 읽어보았다. Abstract 이 논문의 저자들은 network in network 이라는 새로운 deep network structure를 제안했다. 수용장 내에서 local patches의 모델 차별성을 향상시키기위해 전통적인 합성곱층은 input을 scan한 비선형 활성화함수 뒤에 선형 필터를 사용했다.대신 이들은 수용장 내에서 데이터를 추출하기위해 더 복잡한 구조인 micro neural network를 만들었다. 이들은 다층 퍼셉트론으로 micro neural network를 인스턴트화 했는데 이것은 potent function approximato..

4.GoogleNet 논문 리뷰, 구현

이번 포스팅에서는 GoogleNet논문(Going deeper with convolutions)을 리뷰하고 구현해 보겠다. 이 논문의 저자들은 Inception이라고 불리는 깊은 합성곱 신경망을 제안했다. 이는 ILSVRC-2014에서 classification과 detection 부분에서 최첨단의 기술을 보였다. Introduction 논문의 저자들의 GoogleNet은 AlexNet보다 12배 적은 파라미터를 사용했는데 더 정확했다. 이 논문에서 이들은 computer vision분야의 효율적인 deep neural network architecture에 focus를 맞추었다. Inception이라고 불리는 구조를 사용했다. Related Work network-in-network방법은 1x1 합성곱..

3.VGG 논문 리뷰,구현

이번 포스팅에서는 VGG 논문을 리뷰하고 구현해 보겠다. Abstract 논문 저자들의 주되 기여는 매우 작은 (3x3) 합성곱 필터를 가진 구조를 사용하여 깊이가 증가하는 네트워크를 철저히 평가하는 것이다. 이는 깊이를 16~19층으로 구현하면서 선행 기술 구성의 상당한 향상을 달성할 수 있다는 것을 보여주었다. 이 저자들의 팀은 2014년 ImageNet challenge에서 locaslisation과 classification에서 각각 1등과 2등을 차지했다. Introduction 이 논문에서 저자들은 ConvNet의 깊이 구조에 초점을 맞추었다. 이를 위해서 읻르은 5가지의 파라미터를 고정시켰고, 합성곱 층을 더 추가하면서 network의 깊이만 증가시켰는데 이는 매우 작은 (3x3) 합성곱 필..

2. AlexNet 논문 리뷰,구현

이번 포스팅에서는 AlexNet 논문을 리뷰하고 구현해 보겠다. Abstract 이 논문의 저자들은 1.2million images를 LSVRC-2010 contest 에서 1000개의 클래스로 분류했다. top-1 과 top-5 오류율은 각각 37.5%, 17.0% 였고, 이는 이전에 비해 상당히 발전된 성능이였다. 이 network는 60million 파라미터와 650,000개의 뉴런으로 구성되어있고, 5개의 합성곱층, 그리고 그 뒤에 바로 이어지는 maxpooling층으로 구성되어있다. 그다음 3개의 완전 연결층으로 연결되어있고, 활성화 함수는 softmax 함수를 사용했다. 더 빨리 학습하기 위해서 포화되지 않은 뉴런을 사용했다. 과대적합을 막기 위해서 완전연결층에 dropout 기법을 사용했다...

데이터 증강

이미지 회전과 같은 무작위 변환을 적용하여 훈련 세트의 다양성을 증가시키는 기술인 데이터 증강의 예에 대해 정리하겠다. import matplotlib.pyplot as plt import numpy as np import tensorflow as tf import tensorflow_datasets as tfds from tensorflow.keras import layers from tensorflow.keras.datasets import mnist 데이터셋 다운로드 (train_ds,val_ds,test_ds),metadata=tfds.load('tf_flowers', split=['train[:80%]','train[80%:90%]','train[90%:]'], with_info=True, as..

tensorflow 2022.06.27

1. LeNet-5 논문 리뷰, 구현(tensorflow)

이번 포스팅은 Yann LeCun의 Gradient-Based Learning Applied to Document Recognition에 소개되어진 LeNet-5에 대해서 간단히 리뷰를 해보겠다. 먼저 이 논문이 밝히는 main message는 더 나은 패턴인식 시스템은 automatic learning에 더 의존하게 만들어져야 한다는 것이다. 전통적인 패턴인식 모델은 hand-designed된 feature-extractor가 input으로부터 적절한 정보를 수집하고 적절하지 않은 변동성을 제거했다. 그다음 trainable classifier가 결과로 나온 feature vector를 클래스들로 분류했다. 이는 특성 인식과 같은 작업에는 어느 정도 성공하면서 완전히 연결된 일반적인 피드포워드 네트워크..

백준 1541번 - split() 함수의 활용

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net split() 함수에 다음과 같이 문자열 인자를 주면 그 문자열을 기준으로 나눈 리스트를 반환한다. import sys print('10'.split('+')) print('10+20'.split('+')) 이 문제는 주어진 문자열을 ' '.join()함수로 먼저 한칸씩 띄어쓰기 문자열을 만든후 split()함수로 문자열을 리스트로 만든다. '12+34' -> ['1','2','+','3',..

알고리즘 2022.06.23

연속합 - 백준 1912번

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net dp문제인데 왼쪽부터 더해주면서 큰수가 나올경우 dp배열에 넣어준다. import sys N=int(sys.stdin.readline()) M=list(map(int,sys.stdin.readline().split())) dp=[0]*N dp[0]=M[0] for i in range(1,N): dp[i]=max(M[i],dp[i-1]+M[i]) print(max(dp)) 왼쪽부터 숫자 하나씩 비교하면서 만약..

알고리즘 2022.06.17

미로찾기 (BFS)- 백준 2178번

출처: https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 위 문제는 기본적인 최단거리 찾기 문제이다. 나는 처음에 DFS로 접근해서 답이 나오지 않았다. 이 문제는 BFS로 풀어야 한다. import collections N,M=map(int,input().split()) q=collections.deque() q.append((0,0)) m=[] for _ in range(N): m.append(list(map(int,input()))) arr=[0]*M visited=[] ..