전체 글 136

1부 3.1 신경망의 구조

1부 딥러닝의 기초 3장 신경망 시작하기 3.1 신경망의 구조 네트워크(또는 모델)을 구성하는 층 입력 데이터와 그에 상응하는 타깃 학습에 사용할 피드백 신호를 정의하는 손실 함수 학습 진행 방식을 결정하는 옵티마이저 연속된 층으로 구성된 네트워크가 입력 데이터를 예측으로 매핑 손실 함수는 예측과 타깃을 비교하여 네트워크의 예측을 기댓값에 얼마나 잘 맞는지를 측정하는 손실 값 만듦. 옵티마이저는 손실 값을 사용하여 네트워크 가중치를 업데이트 가중치 확률적 경사 하강법에 의해 학습되는 하나 이상의 텐서 여기에 네트워크가 학습한 지식이 담겨 있음. 층(layer, 딥러닝의 구성 단위) 하나 이상의 텐서를 입력으로 받아 하나 이상의 텐서를 출력하는 데이터 처리 모듈 대부분의 경우 가중치라는 층의 상태 가짐. ..

[백준] 2089번 -2진수 - 파이썬(Python)

https://www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110 www.acmicpc.net 문제 접근법 # 도저히 접근법을 모르겠어서 검색해봄. 나중에 다시 풀어보기 -2로 N을 계속 나눠줌. 나머지가 1과 0이 나와야 함. 따라서 0이 나왔을 때는 그대로 진행하여 몫과 나머지 그대로 사용 -1이 나오면 몫에 +1을 해주고 나머지는 1로 처리 나온 나머지들을 앞에서부터 쌓아 ans 만듦. ..

[백준] 1212번 8진수 2진수 - 파이썬(Python)

https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 문제 21.03.13 접근법 8진수를 10진수로 변환 후, format함수를 이용해 2진수로 변환 21.03.13 코드 n=int(input(),8) print(format(n,'b')) 21.08.26 접근법 8진수를 10진수로 변환 후, format함수를 이용해 2진수로 변환 21.08.26 코드 print(format(int(input(),8),'b'))

[백준] 1373번 2진수 8진수 - 파이썬(Python)

https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 문제 21.03.13 접근법 2진수로 입력받아 format함수를 사용해 8진수로 변환 21.03.13 코드 n=int(input(),2) print(format(n,'o')) 21.08.26 접근법 2진수를 입력받아 oct()함수를 이용해 8진수로 변환 형식을 알려주기 위해 0o~로 출력되기 때문에 2 위치부터 출력 21.08.26 코드 b=oct(int(input(),2)) print(b[2:])

1부 2.4 신경망의 엔진: 그래디언트 기반 최적화

1부 딥러닝의 기초 2장 딥러닝이란 무엇인가? 2.4 신경망의 엔진: 그래디언트 기반 최적화 훈련 반복 루프 1. 훈련 샘플 x와 이에 상응하는 타깃 y의 배치를 추출 2. x를 사용하여 네트워크를 실행하고 예측 y_pred를 구함. 3. y_pred와 y의 차이를 측정하여 배치에 대한 네트워크 손실을 계산 4. 배치에 대한 손실이 조금 감소되도록 네트워크의 모든 가중치를 업데이트 신경망의 사용된 모든 연산은 미분 가능하다는 장점을 사용해 네트워크 가중치에 대한 손실의 그래디언트를 계산하는 것이 좋은 방법 미분 가능 == 변화율을 유도할 수 있음의 의미 그래디언트(gradient) 텐서 연산의 변화율 그래디언트의 반대 방향으로 가중치를 이동하면 손실이 감소 확률적 경사 하강법 확률적 : 각 배치 데이터가..

1부 2.3 신경망의 톱니바퀴: 텐서 연산

1부 딥러닝의 기초 2장 딥러닝이란 무엇인가? 2.3 신경망의 톱니바퀴: 텐서 연산 심층 신경망이 학습한 모든 변환을 수치 데이터 텐서에 적용하는 몇 종류의 텐서 연산으로 나타낼 수 있음. (텐서 덧셈, 텐서 곱셈..) 원소별 연산 relu함수와 덧셈 텐서에 있는 각 원소에 독립적으로 적용 고도의 병렬 구현이 가능한 연산 relu(x) = max(x,0) 입력이 0보다 크면 입력을 그대로 반환 입력이 0보다 작으면 0을 반환 브로드캐스팅 크기가 다른 두 텐서가 연산될 때 모호하지 않고 실행이 가능하면 작은 텐서가 큰 텐서에 크기를 맞춤. [브로드캐스팅 과정] 1. 큰 텐서의 ndim에 맞도록 작은 텐서에 축이 추가 2. 작은 텐서가 새 축을 따라서 큰 텐서의 크기에 맞도록 반복 [예] x -> (32,1..

1부 2.2 신경망을 위한 데이터 표현

1부 딥러닝의 기초 2장 딥러닝이란 무엇인가? 2.2 신경망을 위한 데이터 표현 최근 모든 머신 러닝 시스템은 일반적으로 텐서를 기본 데이터 구조로 사용 텐서(tensor) 머신 러닝의 기본 구성 요소 데이터를 위한 컨테이너(container) 거의 항상 수치형 데이터를 다루므로 숫자를 위한 컨테이너 임의의 차원 개수를 가지는 행렬의 일반화된 모습 (텐서에서는 차원(dimension)을 종종 축(axis)이라고 부름.) 스칼라(0차원 텐서, 0D 텐서) 하나의 숫자만 담고 있는 텐서 넘파이에서는 float32나 float64 타입의 숫자가 스칼라 텐서 ndim 속성을 사용하면 넘파이 배열의 축 개수를 확인할 수 있음. import numpy as np x=np.array(12) x.ndim 축 개수(랭크..

[백준] 17087번 숨바꼭질 6 - 파이썬(Python)

https://www.acmicpc.net/problem/17087 17087번: 숨바꼭질 6 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이 www.acmicpc.net 문제 접근법 문제와 예제를 봤을 때는 최소 차이가 답인 거 같아서 최소 차이값만 찾아 제출했는데 틀렸다 나옴. 찾아보니 차의 절댓값들의 최대공약수를 구해야한다 나와있어 그렇게 우선 제출은 함. 근데 왜 최댓값을 구하는데 최소의 값을 찾고, 그 최소의 값들 중 최대공약수를 찾는 지 모르겠음... [과정] 수빈의 위치와 동생들의 위치의 차를 절댓값해서 ck배열에 저장 ..

[백준] 9613번 GCD 합 - 파이썬(Python)

https://www.acmicpc.net/problem/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 n=4, 10,20,30,40 4개로 GCD 구하는 것 앞에서부터 하나씩 비교하며 GCD를 구하며 합을 누적시킴. GCD함수인 math.gcd()를 사용하였는데, 비교를 해보니 이걸 사용하나 직접 구현하나 시간은 거의 비슷함. 때문에..

1부 2.1 신경망과의 첫 만남

1부 딥러닝의 기초 2장 딥러닝이란 무엇인가? 2.1 신경망과의 첫 만남 class(클래스) 머신 러닝에서 분류 문제의 범주(category) label(레이블) 특정 샘플(데이터 포인트)의 클래스 layer(층) 신경망의 핵심 구성 요소 주어진 문제에 더 의미있는 표현을 입력된 데이터로부터 추출 학습 작업 순서 1. 훈련 데이터인 train_images와 train_labels을 네트워크에 주입 2. 네트워크가 이미지와 레이블을 연관시킬 수 있도록 학습 3. test_images에 대한 예측을 네트워크에 요청 4. 예측이 test_labels와 맞는지 확인 MNIST 데이터셋 케라스 파이썬 라이브러리 사용 넘파일 배열 형태이며 흑백 손글씨 숫자 이미지(28*28 픽셀)를 10개의 범주(0~9)로 분류 ..