일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 기울기
- PostgreSQL
- 딥러닝
- FastAPI
- CTF
- PICO CTF
- 코딩
- 리뷰
- picoCTF
- 역전파
- 우분투
- AdaGrad
- 백준
- 책
- Apache2
- 오차역전파법
- 신경망 학습
- 소프트맥스 함수
- C언어
- HTML
- Python Challenge
- 신경망
- Python
- 순전파
- 아파치
- PHP
- flag
- 파이썬
- 설치
- sgd
- Today
- Total
목록공부 (139)
Story of CowHacker
지금까지 알아본 신경망을 통해 실전 예에 적용해보자. 손글씨 숫자 분류를 구현해볼 거다. 출처 : 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번째 뉴런 ..
백준 10718번을 풀어볼것이다. 알고리즘 분류는 출력이다. 입력 조건은 없고 출력 조건에 강한친구 대한육군을 한 줄에 한 번씩 두줄에 걸쳐 출력하는 것이였다. C언어로 푼것이다. main문에 첫번째로 크기100인 a에 강한친구 대한육군이라는 문자를 가진 변수를 선언했다. 두번째로 printf를 두번사용해 출력 조건을 충족 시켯다. 파이썬으로 푼것이다. print의 옵션인 \n을 사용하여 바로 출력 조건을 충족 시켰다.
Hello World 백준 알고리즘 사이트내에 단계별로 풀기에서 첫번쨰 문제다. 알고리즘 분류는 출력이다. 나는 문제에서 요구하는 Hello World!를 출력하기 위해 print를 썻다.
다차원 배열 다차원 배열이란 숫자의 집합이다. 숫자가 한 줄로 늘어선 것이나 직사각형, 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가 알려줄 때 튜플 형태로 알려준다는 ..