머신러닝

본문 바로가기
사이트 내 전체검색


머신러닝
머신러닝

4. 신경망의 내적

페이지 정보

작성자 관리자 댓글 0건 조회 1,437회 작성일 20-02-23 09:32

본문

4. 신경망의 내적

 [ 행렬의 곱 (행렬의 내적) ]

  - 2차원 배열의 내적(행렬의 곱)



1.PNG

2.PNG

3.PNG

4.PNG

5.PNG


 

  파이썬에서 내적을 구하기

 

  A = np.array([[1,2],[3,4]])
  B = np.array([[5,6],[7,8]])

  np.dot(A, B) #내적을 구하는 함수



 

실습.


# -*- coding: utf-8 -*-
import numpy as np

A = np.array([[1,2],[3,4]])
print(A)
print("---------------------")
print(A.shape) # 변수의 형태를 튜플로 보여줌
print(np.ndim(A)) # n차원

print("---------------------")
B = np.array([[5,6],[7,8]])
print(B)
print("---------------------")
print(B.shape) # 변수의 형태를 튜플로 보여줌
print(np.ndim(B)) # n차원
print("---------------------")
print(np.dot(A, B)) # 행렬의 곱


결과.



6.PNG


 

  * 행렬의 내적은 형상에 주의 해야한다.

  행렬은 내적은 대응하는 차원의 원소 수를 일치 시켜야 한다.

 

7.PNG 

 

실습.


# -*- coding: utf-8 -*-
import numpy as np

A = np.array([[1,2,3],[4,5,6]])
print(A)
print("---------------------")
print(A.shape)
print(np.ndim(A))

print("---------------------")
B = np.array([[1,2],[3,4],[5,6]])
print(B)
print("---------------------")
print(B.shape)
print(np.ndim(B))
print("---------------------")
print(np.dot(A, B)) # 행렬의 곱


결과.


8.PNG

 


9.PNG

10.PNG

 

 




11.PNG

12.PNG

13.PNG

 

실습.


# -*- coding: utf-8 -*-
import numpy as np

A = np.array([[1,2],[3,4],[5,6]])
print(A)
print("---------------------")
print(A.shape)
print(np.ndim(A))

print("---------------------")
B = np.array([1,2])
print(B)
print("---------------------")
print(B.shape)
print(np.ndim(B))
print("---------------------")
print(np.dot(A, B)) # 행렬의 곱


결과.


14.PNG

 


 

 [신경망의 내적(가중치만 적용)]

 

15.PNG 

 

실습


# -*- coding: utf-8 -*-
import numpy as np

X = np.array([1,2]) #입력신호
W = np.array([[1,3,5],[2,4,6]]) # 1,3,5는 x1의 가중치 / 2,4,6은 x2의 가중치
Y = np.dot(X,W)

print(X)
print("---------------------")
print(X.shape)
print(np.ndim(X))
print("---------------------")
print(W)
print("---------------------")
print(W.shape)
print(np.ndim(W))
print("---------------------")
print(Y)
print("---------------------")
print(Y.shape)
print(np.ndim(Y))
 

결과.



16.PNG



1.PNG

2.PNG

17.PNG



실습.


# -*- coding: utf-8 -*-
import numpy as np

X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
print(X.shape)
print(np.ndim(X))
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
print(W1.shape)
print(np.ndim(W1))
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")
print(B1.shape)
print(np.ndim(B1))
print("---------------------")


A1 = np.dot(X,W1) + B1

print(A1)
print("---------------------")
print(A1.shape)
print(np.ndim(A1))
 


결과.



18.PNG



3.PNG

실습.


# -*- coding: utf-8 -*-
import numpy as np

def sigmoid(x):
   return 1/ (1+np.exp(-x))

X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
print(X.shape)
print(np.ndim(X))
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
print(W1.shape)
print(np.ndim(W1))
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")
print(B1.shape)
print(np.ndim(B1))
print("---------------------")

A1 = np.dot(X,W1) + B1

print(A1)
print("---------------------")
print(A1.shape)
print(np.ndim(A1))

z1 = sigmoid(A1)
print(z1)
print("---------------------")
print(z1.shape)
print(np.ndim(z1))
 


결과.



19.PNG




4.PNG


실습.


# -*- coding: utf-8 -*-
import numpy as np

def sigmoid(x):
   return 1/ (1+np.exp(-x))

X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")

A1 = np.dot(X,W1) + B1
print(A1)
print("---------------------")

z1 = sigmoid(A1)
print(z1)
print("---------------------")
W2 = np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]]) # 가중치
print(W2)
print("---------------------")
B2 = np.array([0.1, 0.2]) #편향
print(B2)
print("---------------------")
A2 = np.dot(z1,W2) + B2
print(A2)
print("---------------------")
z2 = sigmoid(A2)
print(z2)
print("---------------------")
 


결과.


20.PNG


5.PNG


실습.


# -*- coding: utf-8 -*-
import numpy as np

def sigmoid(x):
   return 1/ (1+np.exp(-x))


def identity_func(x):
   return x


X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")

A1 = np.dot(X,W1) + B1
print(A1)
print("---------------------")

z1 = sigmoid(A1)
print(z1)
print("---------------------")
W2 = np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]]) # 가중치
print(W2)
print("---------------------")
B2 = np.array([0.1, 0.2]) #편향
print(B2)
print("---------------------")
A2 = np.dot(z1,W2) + B2
print(A2)
print("---------------------")
z2 = sigmoid(A2)
print(z2)
print("---------------------")

W3 = np.array([[0.1,0.3],[0.2,0.4]]) # 가중치
print(W3)
print("---------------------")
B3 = np.array([0.1, 0.2]) #편향
print(B3)
print("---------------------")
A3 = np.dot(z2,W3) + B3
print(A3)
print("---------------------")
Y = identity_func(A3) # 항등함수 : σ() (시그마)
print(Y)
print("---------------------")

# 출력층의 활성화 함수는 시그모이드, 시그마, 소프트맥스 를 사용할 수 있다.


결과.



21.PNG



실습.


# -*- coding: utf-8 -*-
import numpy as np

#가중치와 편향을 초기화해주는 함수
def sigmoid(x):
   return 1/ (1+np.exp(-x))

def identity_func(x):
   return x


def init_network():
   network = {}
   network['W1'] = np.array([[0.1, 0.3, 0.5],[0.2, 0.4, 0.6]])
   network['b1'] = np.array([0.1, 0.2, 0.3])
   network['W2'] = np.array([[0.1, 0.4],[0.2, 0.5],[0.3, 0.6]])
   network['b2'] = np.array([0.1, 0.2])
   network['W3'] = np.array([[0.1, 0.3],[0.2, 0.4]])
   network['b3'] = np.array([0.1,0.2])

   return network


# 입력 신호를 출력으로 변환하는 처리과정(순방향)

def forward(network, x): 
   W1, W2, W3  = network['W1'], network['W2'], network['W3']
   b1, b2, b3 = network['b1'], network['b2'], network['b3']

   a1 = np.dot(x,W1) + b1
   z1 = sigmoid(a1)

   a2 = np.dot(z1,W2) + b2
   z2 = sigmoid(a2) 

   a3 = np.dot(z2,W3) + b3
   y = identity_func(a3)

   return y

network = init_network()
x = np.array([1.0, 0.5])
print(x)
print("---------------------")

y = forward(network, x)
print(y)
 
결과.



22.PNG

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.