2. 강사 소개
서강대학교 물리학과 졸업
부산대 대학원 지구과학과 박사 수료
부산게임아카데미 교수
영산대 가상현실 콘텐츠학과 겸임교수
NC 소프트 사내교육 강사
(주)미리내소프트웨어 개발이사
(주)스코넥 VR 기술 고문
미래기술에이원(주) 기술이사
인디라! 인디게임개발자모임 대표
146. Python 소스 코드 (1 / 2)
# numpy 라이브러리 불러오기(행렬계산 관련 도구들)
import numpy as np
# 시그모이드 함수 정의
def sigmoid(x):
return 1/(1+np.exp(-x))
# 시그모이드 함수의 도함수(미분) 정의
def Dsigmoid(x):
return x*(1-x)
#<패턴 입력>
# 입력 패턴(텍스트 파일로 만들고 불러옴)
a = np.loadtxt("learn_p.txt")
a = np.reshape(a, (30,64))
print('Learn Patterns')
print(a.shape)
# 우리가 기대하는 0부터 9까지의 숫자값을 목적패턴으로 지정
b = np.loadtxt("target_p.txt")
print('Target Patterns')
print(b.shape)
#<가중치 무작위 설정>
#난수 설정
np.random.seed(1)
# 연결가중치1
w0 = 2*np.random.random((64,15))-1
# 연결가중치2
w1 = 2*np.random.random((15,10))-1
#<학습과정 (60000번 반복)>
for iter in range(600000):
#입력층 지정(입력패턴이 처음 지정되는 층)
l0 = a
#은닉층 지정(입력 패턴이 가중치와 곱해져서 나온 값들이 은닉층에 지정됨)
l1 = sigmoid(np.dot(l0,w0))
#출력층 지정(다시 가중치와 곱해져서 나온 최종 값들이 출력층에 지정됨)
l2 = sigmoid(np.dot(l1,w1))
147. Python 소스코드 (2 / 2)
#<테스트하기>
# 시험 패턴 불러오기
test = np.loadtxt("test_p.txt")
test = np.reshape(test, (14,64))
#입력층에 패턴 입력
l0 = test
#은닉층 지정
l1 = sigmoid(np.dot(l0,w0))
#출력층 지정
l2 = sigmoid(np.dot(l1,w1))
#시험결과 출력
print ('Test Consequense')
print (l2)
#<오류역전파 알고리즘으로 가중치 변경하는 과정>
#목적패턴과 출력패턴과의 오차
l2_error = b - l2
#주기적으로 오류값 출력
if iter % 5000 == 0 :
print ("Error:")
print (l2_error)
#은닉층과 출력층 사이 가중치를 변경할 델타 값(미분 계산 들
어감)
l2_delta = l2_error * Dsigmoid(l2)
#은닉층에 지정된 값의 오차
l1_error = np.dot(l2_delta, w1.T)
#입력층과 은닉층 사이 가중치를 변경할 델타 값(미분 계산 들
어감)
l1_delta = l1_error * Dsigmoid(l1)
#연결 가중치를 각각 델타 값을 이용해 변경
w1 += np.dot(l1.T,l2_delta)
w0 += np.dot(l0.T,l1_delta)
#학습결과 출력
print ('nPractice Consequense')
print (l2)
인공지능 大家 4인 - 인공지능 기계학습법 ‘딥러닝’ 연구의 대가들. 인공지능 전문가들 사이에서 영화 제목을 따 ‘판타스틱4’로 불린다. 2014년 12월 캐나다 몬트리올에서 열린 ‘신경정보처리시스템’ 학회에서 찍은 사진이다. 왼쪽부터 얀 레쿤(미국 뉴욕대 교수) 페이스북 인공지능연구소장, 제프리 힌튼(캐나다 토론토대 교수) 구글 석학 연구원, 요수아 벤지오(IBM과 공동 연구) 캐나다 몬트리올대 교수, 앤드루 응(미국 스탠퍼드대 교수) 실리콘밸리 중국 바이두 인공지능연구소 수석연구원.