제로부터 시작하는 코딩 생활
[파이썬] 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 |