반응형
텐서 플로우
- 텐서플로우는 딥러닝 프레임워크이다.
- 현재 2020년 06월 기준 최신 버전은 2.0 이다.
- 2.0 버전에서는 텐서플로우에 케라스가 포함되어있다.
- 케라스는 고수준의 api 를 제공 한다.
- 구글 클라우드를 사용하면 GPU/TPU 를 사용 할 수 있는 colab 을 사용하여 텐서플로우 및 sklearn,
등 머신러닝에 필요한 거의 모든패키지가 제공되며, 필요한 패키지 설치 가능하다,
또한 구글 드라이브에 저장된 데이터를 사용 할 수있으며,
외부 데이터를 불러와 사용 할 수 도 있다.
텐서플로우 난수 및 정규분포 생성
- 텐서 플로우 난수 생성
#균일한 분포의 난수를 출력 해준다.
#tf.random.uniform(모양, 최소값, 최대값)
#모양: 행렬, shape 을 말한다.
rand = tf.ranom.uniform([1],0,1)
- 정규분포 생성
#normal([], 난수 평균값, 난수 표준편차)
#평균 0, 표준 편차 1 사이의 난수 무작위 출력
rand_nor = tf.random.normal([4],0,1)
신경망
- 신경망
#입력 -> [뉴런,뉴런,뉴런]...[뉴런,뉴런...] -> 출력
- 뉴런
#입력 -> 가중치(w) -> 활성화 함수(f) -> 출력
#정수 or float 형식으로 많이 사용됨.
활성화 함수: 입력값과 가중치 연산을 보고, 출력값을 정해주는 역할을 한다.
신호등과 같은 역할을 하며, 다양한 함수들이 존재한다.sigmoid, relu,tanh ...
sigmoid -> 출력결과 값이 0 ~ 1
relu -> 0 이하이며 0, 0 초과시 값 그대로
최근 은닉층을 깊게 쌓아 올렸을때 함수의 결과값 소실 문제로 인해 결과값이 0 초과시 값 그대로 사용하는
relu 를 많이 사용한다.
가중치: 신경망의 출력값과, 실제값의 차이를 최소화 해주는 역할을 한다.
임이의 숫자이며, 점차 줄어 든다.
활성화 함수(sigmoid) 를 파이썬으로 구현 해보고 간단한 신경망을 구현
#f(x) = 1 / 1+e^x
def sigmoid(x):
return 1 / (1+math.exp(-x))
# sigmoid 함수로 가중치 구하기
x,y = 1,0
w = tf.random.normal([1],0,1)
#편향 : bias, 가중치 처럼 무작위로 값을 넣도록 한다.0 과 같은 값이 들어올때 신경망 계산이 안됨 방지
b = tf.random.normal([1],0,1)
output = sigmoid(x * w)
#error = 실제값 - 연산값
#error 값이 0에 가까워 지도록 학습 시키도록 한다.
#경사하강기법을 사용해 w 를 변화 시켜 줘야 한다.
#경사하강기법: w = w + x * 학습률 * error
#학습률: 업데이트 주기? 정도로 생각하면 되며, 보통 0.1 을 사용함.
#경사하강기법을통해 1000 번 정도 학습 시키도록 한다.
for i in range(1000):
output = sigmoid(x * w)
error = y - output
w = w + x * 0.1 * error
b = b + 1 * 0.1 * error
# 100 번째마다 끊어서 출력하도록 하기 위함.
if i % 100 == 99:
print(i, error, output)
반응형
'DS' 카테고리의 다른 글
elasticsearch cluster and filebeat with kibana (0) | 2018.03.16 |
---|---|
계층형 테이블 구조 및 쿼리 (1) | 2018.01.09 |
mac cassandra 설치 및 시작 (0) | 2017.10.12 |
자동 증가 컬럼생성 방법 (0) | 2017.08.14 |
데이터베이스 인덱싱 생성 방법 (0) | 2017.08.02 |