sigmoid 함수 그리기 및 역할 및 그래프 문제 해결

 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 


     따라서  네트워크가 복잡할때,   Activation 함수를 simoid를 사용하지 않고 Relu함수를 사용하는 경우가 많다.  그래서 대부분 Relu를 사용한다. 

  • sigmoid 함수는 logistic regression 분류의 문제에 있어서 많이 사용한다.  

공식은 간단해 보이지만,  나온 이유는  활성화 함수를 사용하기 위한 목적이 있고,  분류를 하기 위한 목적이 있다.    



댓글 없음:

댓글 쓰기

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...