ABOUT ME

Contact.
Email:yj.anthonyjo@gmail.com
Introduce : CS Student.

Today
-
Yesterday
-
Total
-
  • 딥러닝 공부 - 신경망 첫걸음 정리_5_실습_Numpy, Matplotlib, Class
    인공지능, 머신러닝 2020. 1. 30. 02:12
    반응형

    기본적으로 사용할 것들인 Numpy, Matplotlib, Class를 알아보자.

    numpy, matplotlib, class.ipynb
    0.01MB

    jupyter notebook 파일

     

    시작하기 전에 말하지만, 제일 중요한 건, 공식 사이트에서 궁금한 것을 찾아보는 것이다.

     

    물론 문제해결이 목적이라면, 구글 검색이 제일이지만, 그래도 우선인건 공식 사이트이다. 내가 무언가를 빠트렸을지도 모르기 때문이다. 

    https://www.scipy.org/docs.html 에서 numpy,그리고 정말 좋은 scipy(sigmoid함수, sigmoid의 역함수 등을 제공) 모듈을 볼 수 있다.

    matplotlib는

    https://matplotlib.org/ 에서 보자. quick search에서 대부분 볼 수 있을 것이다.

     


    Numpy

    1. np.zeros()는 인자로 주어진 행렬을(배열) 모두 0으로 초기화 시킨다.

    2. 값을 주는 방법은, a[n,k] = 값, 또는 a[n,] = [값_n,값_k](괄호 혹은 대괄호)이다. 이렇게, 행렬로 따지면 행만 넣고, 값을 줄 수도 있다.

     

    # 아래는 Numpy 관련한 실험이다.


    Matplotlib

    사실 내가 지금 다룰 것 외에 정말 많은 기능이 있다. 내가 그 중에 사용 해본 것 하나는 바로, inpoly라고 해서 도형(폴리건)안에 점(dot,(a,b))가 존재하는지 여부를 Boolean형태의 배열로 주는 함수였다. 정말 유용하게 사용했던 경험이 있다. Matplotlib는 시각화와 그래프 부분에선 절대적이라고 표현하고 싶다. 시간이 나면, 그 많은 기능 또한 정리해보겠다.

    지금은 배열을 시각화 하는 과정만 살펴보자.

    아주 간단하다. matplolib의 pyplot을 불러오고 그 모듈로imshow(배열)을 해주면 끝이다.


    Class

    정말로 중요한 개념이다. 그런만큼, 꼭 다음 설명 사이트는 보고오자. https://wikidocs.net/28

     

    위키독스

    온라인 책을 제작 공유하는 플랫폼 서비스

    wikidocs.net

    굉장히 어쩌면 어려울 수 있는 개념을 잘 설명했다.

    내가 간단히 다시 설명해보면 다음과 같다.

    클래스는 데이터와 함수들의 모음으로써, 이를 만들어 내는 제조공장이다. 즉 클래스는 붕어빵의 붕어빵 틀을 의미한다.

    그리고 우리는 클래스를 사용하기 위해 객체(object)라는 것을 만든다. 각 사용된 객체는 인스턴스(instance)라고 부르는데, 이는 객체를 각각 사용한 것을 의미하고, 인스턴스들을 추상적으로 객체라고 부른다. 믿지마라.. 언제까지나 내 생각이다.

    wikidocs의 "객체와 인스턴스의 차이"에 대한 설명

    내 설명보다 날 것이다. 내가 한 말은 무시하고 봐도 된다. 근데 이해한게 아까워서ㅎ

     

    클래스에는 앞서 말했다 싶이, 함수들을 포함한다고 했는데, 이때의 함수를 메서드(method)라고 부른다.

    이제 실전 적용해보자.

     

    개(Dog)라는 클래스를 만들자 이 클래스는 개가 짓는 메서드를 포함한다.

    아래 주석 중 '다 틀린 듯 하다'는 내가 쓴 설명을 의미한다.. 말했다 싶이, jupyter notebook의 객체, 인스턴스 설명은 넘어가자.

    Dog 클래스를 만들고 SaranA라는 객체를 만들었다.

    그리고 그 객체에 있는 walwal() 메서드를 불러들였다.

     

    클래스에서는 self. (혹은 인자로서 self) 를 넣는 경우가 거의 대부분인데, 이는 이 함수, 혹은 이 변수가 어느 객체에 할당 되어있는지를 나타낸다고 한다. 굳이 있어야 할 건가? 라는 생각이 들지만, 파이썬이 그러라고 하면 따라야지 다른 방도가 없다. 메서드의 첫 인자는 무조건 self이다.

     

    또 __Init__()이라는 함수도 존재한다. (필요하면)

    이는 클래스 객체가 생성될때, 실행되는 작업들이다. 

    위 코드는, 각 객체에 접근해서 그 객체의 변수를 바꾸고 메서드를 각각 호출 해 본것이다. 그리고, __init__()를 활용해, 객체를 선언할 떄, 개 이름과, 온도를 입력해준다.


    사용된 코드는 다음과 같다.

    1. numpy

    import numpy as np
    a=np.zeros([3,2])
    print(a)
    a[0,0]=1
    a[0,1]=2
    
    a[1,0]=3
    a[1,1]=4
    
    a[2,0]=5
    a[2,1]=6
    print(a)
    
    ##### 실험
    a[0,]=(1,19) # 변수 초기화 시에 괄호, 대괄호 다 된다.
    print(a)
    type(a)
    
    #출력시 원소 하나에 접근하면 실수의 형태로 나온다.
    print(type(a[1,1]))
    #or
    v=a[0,1]
    print("v's type: "+str(type(v)))  #뭐 원소를 밖으로 빼서 저장해도 그냥 float가 되지는 않는다.
    
    #a[]=[(1,2),(2,3),(4,5)] 
    #그러나 전체 초기화는 안되는 듯 하다.(대괄호든 소괄호든) 그래서 a= 의 꼴로 하면 type가 numpy 배열아 아닌 다른 형태로 바뀐다.
    #a=[(1,2),(2,3),(4,5)]
    #a=((1,2),(2,3),(4,5)) 
    print(type(a))

    2. matplotlib

    import matplotlib.pyplot as plt
    plt.imshow(a)
    #plt.imshow(a,interpolation="nearest")

    3. class

    class Dog:
        def walwal(self): 
            #월월.. 이때 self는 이 함수가 Dog 클래스 안에 속한다는 것(그래서 어느 객체에 연결해줘야 하는지 알려준다.)을 의미한다.(사용되는 미유를 모르겠음, 비효율적이다..)
            print("월월~~")
    
    sarangA = Dog() 
    # 이렇게 하여 sarangA에 Dog class가 할당된다. 그리고 이 객체에 접근함으로써 class를 사용가능하다.
    sarangA.walwal() #객체에 접근해서 클래스를 사용한 예제
    # 클래스의 함수, 객체의 함수를 메서드(method) 라고 부른다.
    # https://wikidocs.net/28 참고하기
    # ***우리는 이 객체를 하나의 신경망으로 사용한다.***

    class dog:
        def __init__(self,petname,temp):  #init는 객체가 선언될 때, 실행되는 가장 기본적인 것들이다.
            #지금 다시 생각해보면 self는 이 함수, 변수가 할당이 되어야 할 객체인 것 같다. 다른 객체와 구별해주는 역할을 하는 듯 하다.
            self.name=petname
            self.temperature=temp
        def status(self):
            print("dog name is " + self.name)
            print("dog temperature is "+ str(self.temperature))
            print("")
            #pass  #pass 무엇? #있든 없든 잘만되네..
        def setTemp(self,temp):
            self.temperature= temp
            pass
        def walwal(self):
            print("월월!!")
            pass
    pass
    dog_a= dog("멍멍이",35)
    dog_b= dog("강아지",36)
    dog_c= dog("별이",37)
    dog_d= dog("초코",38)
    
    dog_a.status()
    dog_b.status()
    dog_c.status()
    dog_d.status()
    반응형

    댓글

Designed by Tistory.