제로부터 시작하는 코딩 생활

[파이썬] Sigmoid 활성화 함수 구현 본문

파이썬 예제

[파이썬] Sigmoid 활성화 함수 구현

VacTEn 2022. 3. 27. 13:57

Sigmoid 함수란

뉴런은 역치 이상의 반응에 대해서만 신호를 다음객체에게 전달한다. 이를 모방하여 딥러닝 네트워크에서도 각 노드에 입력된 값들이 특정한 함수를 통하여 조건적으로 다음 레이어에 전달한다.

Sigmoid 함수는 뉴런이 작동하는 방식과 같아서 딥러닝의 기초적인 함수로서 많이 소개된다.

Sigmoid 함수

Q. Sigmoid 함수를 구현하여라

단, e^x = 1 + e + x^2/2! + x^3/3! ..... 이고 항은 100개로 제한한다.

1차시도

import math
x = float(input("x값을입력하시오: "))
ex = 0

for i in range(100):
    ex += x**i / math.factorial(i) # 0팩토리얼은 1이다.
if 1 / (1 + ex) >= 0.5:
    print("활성화")
else:
    print("비활성화")

작동: O

결과: X:  0.5 이상의 입력값에 대해 "활성화"를 출력하기 원했으나 결과가 반대로 나옴.

원인분석: ex 가아니라 ex-1 였다. x가 -x로 대체되면 y축에 대해 반전되기 때문이다. 

 

2차시도

import math
x = float(input("x값을입력하시오: "))
ex = 0

for i in range(100):
    ex += x**i / math.factorial(i) # 0팩토리얼은 1이다.
if 1 / (1 + ex**-1) >= 0.5:
    print("활성화")
else:
    print("비활성화")

작동: O

결과: O

해석

import math
x = float(input("x값을입력하시오: "))

(팩토리얼을 위해) math 모듈을 가져온뒤 x값을 입력받아 실수형으로 변환한다.

ex = 0
for i in range(100):
    ex += x**i / math.factorial(i) # 0팩토리얼은 1이다.

입력값 x에 대한 e^x의 100번째 항까지를 ex로 지정

if 1 / (1 + ex**-1) >= 0.5:
    print("활성화")
else:
    print("비활성화")

 

입력값 x에대한 sigmoid 함수값이 0.5이상이면 활성화, 미만이면 비활성화를 출력한다.

'파이썬 예제' 카테고리의 다른 글

[파이썬] 괄호쌍 검증기  (0) 2022.04.07
[파이썬] 삼각형 판별  (0) 2022.03.22
[파이썬] 최대 최소 찾기  (0) 2022.03.22