일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 운영체제
- 공부
- C언어
- linux
- 알고리즘
- 회귀
- python
- 프로그래밍
- Computer Vision
- OpenCV
- 프로세스
- Windows 10
- 리눅스
- Windows10
- error
- 시스템프로그래밍
- TensorFlow
- CV
- 백준알고리즘
- 텐서플로우
- 영상처리
- 학습
- 턱걸이
- 쉘
- 딥러닝
- 백준
- C++
- shell
- c
- 코딩
- Today
- Total
목록TensorFlow (27)
줘이리의 인생적기
그래프와 어느정도 친해졌으니 앞서 배운 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)라는 뜻입니다.
신경망은 많은 숫자로 구성된 행렬이다. 이 행렬에 입력을 넣으면 출력을 얻게 되는데 잘 작동할 경우 원하는 출력에 점점 가까워진다. 랜덤은 신경망에 꼭 필요한 기능이다. 처음 입력은 랜덤 한 값으로 지정해주는 초기화(Initialization)를 해야 하며, 어느 정도 규칙이 있는 범위 내에서 난수를 지정한다. import tensorflow as tf rand = tf.random.uniform([1], 0, 1) print(rand) tf.random.uniform([1], 0, 1)에서 uniform은 균일 분포(uniform distribution)의 난수를 얻는다는 뜻이다. tf.random.uniform([1], 0, 1)에서 [1]은 결괏값의 Shape(행, 열 등 차원의 수)를 뜻한다. t..