일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 코딩
- picoCTF
- HTML
- 책
- AdaGrad
- 기울기
- 아파치
- FastAPI
- sgd
- PICO CTF
- Apache2
- flag
- 신경망
- 순전파
- 파이썬
- CTF
- C언어
- 백준
- 우분투
- 딥러닝
- 신경망 학습
- 설치
- 역전파
- Python
- 오차역전파법
- PostgreSQL
- 리뷰
- PHP
- 소프트맥스 함수
- Python Challenge
- Today
- Total
목록공부/딥러닝 (27)
Story of CowHacker
이번 글에서는 배치 처리에 대해 알아볼 것이다. import sys, os sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 import numpy as num import pickle from dataset.mnist import load_mnist from common.functions import sigmoid, softmax def get_data(): (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True, one_hot_label=False) return x_test, t_test def init_network(): with open("sample_weight...
이제 신경망의 추론 처리에 대해 알아 볼것이다. MNIST 데이터 셋을 가지고 추론을 수행하는 신경망을 구현해볼거다. 먼저 MNIST데이터에 대해 자세히 설명하자면 첫째 MNIST의 데이터셋은 0부터 9까지의 숫자 이미지로 구성된다. 둘째 MNIST의 이미지 데이터는 28 x 28 크기의 회색조 이미지다. 셋째 MNIST의 이미지 데이터의 각 픽셀은 0에서 255까지의 값을 취한다. 자, 이제 신경망의 추론을 수행해보자. 이 신경망은 입력층 뉴런을 784개, 출력층 뉴런을 10개로 구성한다. 입력층 뉴런이 784개인 이유는 이미지 크기가 28 x 28 = 784 이기 때문이다. 출력층 뉴런이 10개인 이유는 이문제가 0에서 9 까지의 숫자를 구분하는 것이기 때문이다. 은닉층은 총 두 개다. 첫 번째 은닉..
지금까지 알아본 신경망을 통해 실전 예에 적용해보자. 손글씨 숫자 분류를 구현해볼 거다. 출처 : tinyurl.com/y2dcawlm Figure 1. Examples handwritten digits in the MNIST dataset. Download scientific diagram | Examples handwritten digits in the MNIST dataset. from publication: Long-Short Term Memory Networks for Modelling Embodied Mathematical Cognition in Robots | Mathematical competence can endow robots with the necessary capabili www.r..
이번 글에서는 먼저 앞 글에서 언급한 소프트맥스 함수의 취약점을 보안한 식을 알아볼 것이다. 소프트맥스 함수에서 지수함수 ( 분자 ) 는 쉽게 아주 큰 값을 낸다. 예를 들어 e^10 은 20,000이넘고, e^100 은 0이 40개가 넘는 큰 값이 된다 이런 큰 값끼리 나눗셈을 하면 결과 수치가 불안정 해진다. 즉, 오버플로 문제가 생긴다. 이제 한번 앞에서 언급한 소프트맥스 함수를 개선 해본다. 개선전 소프트맥스 함수 일단 개선 전 소프트맥스 함수식을 본다. 소프트맥스 함수 개선 과정 첫 번째 과정에서는 C라는 임의의 정수를 분자, 분모 양쪽에 곱했다. 두 번째 과정에서는 C를 지수 함수인 exp() 안으로 옮겨 logC로 만든다. 세 번째 과정에서는 logC를 C` 라는 새로운 기호로 치환한다. 결..
머신러닝은 분류와 회귀로 나뉜다. 분류 : 데이터가 어느 클래스에 속하는지를 뜻한다. ex) 사진 속 사람의 성별을 분류하는 작업이 있다. 회귀 : 입력 데이터에서 수치를 예측하는 것을 뜻한다. ex) 사진 속 사람의 몸무게가 대략 몇 kg 할 것이다와 같이 예측에 해당한다. 여기에서 어느 문제를 쓸 것인지에 따라 신경망의 출력층에서 사용하는 활성화 함수가 달라진다. 분류를 사용 시 소프트맥스 함수, 회귀를 사용 시 항등 함수를 사용한다. 소프트맥스 함수 식 그림1은 소프트맥스 함수를 식으로 나타낸 것이다. exp ( x )는 e^x을 뜻하는 지수 함수다 ( e는 자연상수 ). n은 출력층의 뉴런 수다. yk는 그중 k번째 출력임을 뜻한다. 소프트맥스 함수의 분자는 입력 신호 ak의 지수 함수, 분모는 ..
저번 글 ( 딥러닝 2.3 ) 을 이어 이번에는 2층에서 출력층으로 신호 전달을 하는 과정을 볼 것이다. 2층에서 출력층으로의 신호 전달 그림1에서 출력층에서 활성화 함수가 다르다는 것을 알 수 있다. h()가 아닌 σ( 시그마 ) 를 표시하였다. 이제 파이썬으로 구현해본다. import numpy as num X = num.array ( [ 1.0, 0.5 ] ) W1 = num.array ( [ [ 0.1, 0.3, 0.5 ], [ 0.2, 0.4, 0.6 ] ] ) B1 = num.array ( [ 0.1, 0.2, 0.3 ] ) W2 = num.array ( [ [ 0.1, 0.4 ], [ 0.2, 0.5 ], [ 0.3, 0.6 ] ]) B2 = num.array ( [ 0.1, 0.2 ] ) ..
3층 신경망 구성 입력층 ( 0층 ) -> 첫 번째 은닉층 ( 1층 ) 3개 -> 두 번째 은닉층 ( 2층 ) 2개 -> 출력층 ( 3층 ) 2개 그림 1에서 x1,x2는 입력층이고, y1,y2 는 출력층이다 중간에 아무것도 안 적힌 상자들은 은닉층 들이다. 그림 2는 입력층의 뉴런 x2에서 다음 층의 뉴런으로 향하는 선 위에 가중치를 표시하고 있다. 그림 2의 과정을 표기한 밑의 그림 3을 본다. 그림 3에서 w오른쪽 위에는 ( 1 )이 붙어있는데 이것은 1층의 가중치를 뜻하는 것이다. w의 오른쪽 밑 첫 번째 숫자인 1은 다음 층의 1번째 뉴런을 뜻하고, w의 오른쪽 밑 두 번째 숫자인 2는 앞 층의 2번째 뉴런을 뜻한다. 해석을 해보면 앞 층의 2번째 뉴런 ( x2 ) 에서 다음 층의 1번째 뉴런 ..
다차원 배열 다차원 배열이란 숫자의 집합이다. 숫자가 한 줄로 늘어선 것이나 직사각형, 3차원, N차원으로 나열하는 것을 통틀어 다차원 배열이라고 한다. 이 다차원 배열을 넘파이로 구현해보겠다. [ 1 차원 배열 ] import numpy as num A = num.array ( [ 1, 2, 3, 4 ] ) print ( A ) print ( num.ndim ( A ) ) # 배열의 차원수를 알 수 있다. print ( A.shape ) # 배열의 형상을 알수 있다. print ( A.shape [ 0 ] ) 위 코딩은 1차원 배열을 구현한 것이다. ndim은 배열의 차원수를 알려주는 역할을 한다. shape은 배열의 형상을 알려주는 역할을 한다. 여기서 shape가 알려줄 때 튜플 형태로 알려준다는 ..