일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 텐서플로우
- 백준알고리즘
- Computer Vision
- 공부
- C++
- 딥러닝
- 운영체제
- python
- error
- 프로그래밍
- 쉘
- Windows10
- 알고리즘
- 영상처리
- TensorFlow
- OpenCV
- c
- 코딩
- linux
- Windows 10
- 프로세스
- 리눅스
- 시스템프로그래밍
- 턱걸이
- C언어
- 학습
- CV
- 백준
- 회귀
- shell
- Today
- Total
목록공부 (139)
줘이리의 인생적기

데이터의 경향성을 잘 설명하는 하나의 직선을 예측하는 선형 회귀(Linear Regression)에 대해 공부해보겠습니다. 예를 들어, 키와 몸무게 2개의 데이터 경향성을 보면 키가 클수록 몸무게가 많이 나갈 확률이 높습니다. 또, 날씨의 온도와 호빵의 판매량 2개의 데이터 경향성을 보면 날씨가 추울수록 호빵이 많이 판매될 확률이 높습니다. 저는 통계청에 재미있는 통계들이 많이 있어서 2개의 데이터를 뽑아 어떤 경향성이 있는지 확인해보려고 합니다. kosis.kr/easyViewStatis/visualizationIndex.do KOSIS 국가통계포털 kosis.kr 저는 이 곳에서 2017년 지역별로 학령인구와 고령인구비율 데이터를 가지고 이 두 데이터가 어떤 경향성을 가지고 있는지 선형 회귀로 예측해..

그래프와 어느정도 친해졌으니 앞서 배운 XOR 학습 시킬 때 잘 되고 있는지 시각화 해보겠습니다. import tensorflow as tf import math import numpy as np import matplotlib.pyplot as plt x = np.array([[1,1], [1,0], [0,1], [0,0]]) y = np.array([[0], [1], [1], [0]]) model = tf.keras.Sequential([tf.keras.layers.Dense(units=2, activation='sigmoid', input_shape=(2,)), tf.keras.layers.Dense(units=1, activation='sigmoid')]) model.compile(optimize..

딥러닝 데이터 그래프를 그리기 전에 matplotlib.pyplot와 친해져보도록 하겠습니다. import matplotlib.pyplot as plt import tensorflow as tf x = range(20) y = tf.random.normal([20], 0, 1) #1 plt.plot(x, y) plt.show() #2 plt.plot(x, y, 'ko') plt.show() #3 plt.plot(x, y, 'k-') plt.show() #4 plt.plot(x, y, 'k--') plt.show() #5 plt.plot(x, y, 'ro') plt.show() #6 plt.plot(x, y, 'y-') plt.show() #7 plt.plot(x, y, 'b--') plt.show() 빨..

결론부터 말하자면, 하나의 퍼셉트론으로는 간단한 XOR연산자도 만들어낼 수 없습니다. (Marvin Minsky, Seymour Papert가 증명) 안 되는 XOR 네트워크를 만들어볼 텐데, 앞서 공부한 OR, AND 연산처럼 XOR 진리표부터 보겠습니다. import tensorflow as tf import math import numpy as np def sigmoid(x): return 1 / (1 + math.exp(-x)) x = np.array([[1,1], [1,0], [0,1], [0,0]]) y = np.array([[0], [1], [1], [0]]) # 거짓 참 참 거짓 w = tf.random.normal([2], 0, 1) b = tf.random.normal([1], 0, 1..

AND 연산에 이어 OR 연산 뉴런을 만들어 보겠습니다. 뉴런 계산식도 AND 연산과 동일합니다. AND 연산과 다른점은 출력 y가 바뀌었죠. import tensorflow as tf import math import numpy as np def sigmoid(x): return 1 / (1 + math.exp(-x)) x = np.array([[1,1], [1,0], [0,1], [0,0]]) y = np.array([[1], [1], [1], [0]]) # 참 참 참 거짓 w = tf.random.normal([2], 0, 1) b = tf.random.normal([1], 0, 1) for i in range(2000): error_sum = 0 for j in range(4): output = ..

AND 연산하는 뉴런을 만들어보겠습니다. 진리표는 위와 같습니다. x, y 는 numpy로 구성해주고, 가중치와 편향은 난수 생성으로 구성하겠습니다. import tensorflow as tf import math import numpy as np def sigmoid(x): return 1 / (1 + math.exp(-x)) x = np.array([[1,1], [1,0], [0,1], [0,0]]) y = np.array([[1], [0], [0], [0]]) # 참 거짓 거짓 거짓 w = tf.random.normal([2], 0, 1) b = tf.random.normal([1], 0, 1) for i in range(2000): error_sum = 0 for j in range(4): out..

sigmoid 활성화 함수를 구현하여, 입력이 1일 때 출력이 0이 되는 뉴런을 만들어보겠습니다. import tensorflow as tf import math def sigmoid(x): return 1 / (1 + math.exp(-x)) x = 1 y = 0 w = tf.random.normal([1], 0, 1) output = sigmoid(x * w) error = y - output print("output = ", output) print("error = ", error) 0이 되기에는 역부족으로 보입니다. 이제 w값을 변화시켜야 하는데 경사하강법을 사용해보겠습니다. 경사하강법은 w에 입력과 학습률(α)과 error를 곱한 값을 더해주는 것입니다. w = w + x * α * error ..

뉴런은 신경망의 가장 기본적인 구성요소입니다. 뉴런은 입력을 받아 계산 후 출력을 반환하는 구조입니다. 뉴런들이 여러개 모여 구성한 것을 레이어라고 합니다. 뉴런의 구성요소로는 입력, 가중치, 활성화 함수, 출력으로 구성되어 있습니다. 위처럼 가장 간단한 형태의 뉴런은 입력에 가중치를 곱한 뒤 활성화 함수를 취하는 것입니다. 가중치는 처음에 초기화를 통해 랜덤 값이 들어가게 되며, 학습하며 가중치만 변하게 됩니다. 학습이 잘 된다는 것은 원하는 출력에 가까운 값을 얻는 가중치를 얻게 되는 것입니다. 활성화 함수로는 주로 sigmoid, ReLU 함수들을 씁니다. sigmoid는 S자 형태의 곡선이라는 뜻이고, ReLU는 정류된 선형 함수(Rectified Linear Unit)라는 뜻입니다.