math 함수를 쓰다가 TypeError: only size-1 arrays can be converted to Python scalars 가 발생 되었다. 즉 Math 함수는 list를 미리 만들어 넣고, append 해야 하는 것이고, numpy는 arrange 해야 했다.
내가 문제를 겪었던 사례이다.
import numpy as np
import matplotlib.pyplot as plt
import math
def naive_sigmoid(x):
y = (1/(1+math.exp(-x)))
return y
x = np.arange(-5.0,5.0,0.1)
y = naive_sigmoid(x)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-6-627a79fe035f> in <module> 1 x = np.arange(-5.0,5.0,0.1) ----> 2 y = naive_sigmoid(x) <ipython-input-5-a02ef804cc67> in naive_sigmoid(x) 1 def naive_sigmoid(x): ----> 2 y = (1/(1+math.exp(-x))) 3 return y TypeError: only size-1 arrays can be converted to Python scalars
이건 math라는 함수를 사용하여, Python scalars 에러가 발생된것이다. math는 리스트만 받는다.
아래와 같이 np.exp(-x)로 사용하면 문제가 해결 된다.
import numpy as np
import matplotlib.pyplot as plt
import math
def naive_sigmoid(x):
y = (1/(1+np.exp(-x)))
return y
x = np.arange(-5.0,5.0,0.1)
y = naive_sigmoid(x)
plt.title("sigmoid Funtion" )
plt.plot(x, y)
sigmoid graph |
sigmoid 함수는 아래와 같은 성질을 가진다.
- sigmoid는 0~1까지의 숫자를 나타낸다.
- 수학공식은 아래와 같다.
sigmoid 공식 |
- gradient descent 단계에서 있어서, 신경망은 가중치 (W)를 업데이트 하는데, 역전파 알고리즘이 입력층으로 전달 됨에 따라 그래프가 작아서 가중치 매계변수가 업데이트 되지 않는 vanishing gradient 가 발생되는 경우가 있다.
Vanishing Gradent |
- sigmoid 함수는 logistic regression 분류의 문제에 있어서 많이 사용한다.
댓글 없음:
댓글 쓰기