본문 바로가기
인공지능

[밑바닥부터 시작하는 딥러닝] chapter1: 헬로 파이썬(파이썬 기초)

by stepbyme 2022. 7. 22.
반응형

이번 방학동안 기초를 다시 다지고자 '밑바닥부터 시작하는 딥러닝'을 리뷰해보려 합니다.

 

이 책의 목표는 딥러닝을 밑바닥부터 구현하는 것입니다. 따라서 최소한의 외부 라이브러리를 사용합니다. 다만 넘파이와 matplotlib은 예외인데 효율적으로 딥러닝을 구현하기 위함입니다. 가끔 대학원에서 라이브러리를 사용하지 않고 코드를 구현하는 경우가 있는데 그때 많이 도움을 받은 책입니다. 라이브러리를 사용하지 않고 from scratch로 코드를 짜다보면 실력이 쑥쑥 느는 것을 느낄 수 있을 것입니다. 

 

1. 파이썬

1-1) 산술 연산

>>>1-2
-1

다음과 같이 산술 연산이 가능하다.

 

1-2) 자료형

자료형은 데이터의 성질을 나타낸 것으로 정수, 실수, 문자열 등이 있고 type()함수로 확인할 수 있다.

>>>type(10)
<class 'int'>
>>>type(2.99)
<class 'float'>
>>>type("python")
<class 'str'>

int은 정수, float는 실수, str은 문자열이다. 

 

1-3) 변수

알파벳을 사용하여 변수를 정의할 수 있는데 변수를 이용하여 계산하거나 대입할 수 있다.

>>>x=1
>>>print(x)
1

>>>y=100
>>>x*y
100

 

1-4) 리스트

데이터를 리스트로 정리할 수 있다. [ ] 안의 수를 인덱스라 하며 인덱스는 0부터 시작한다. 즉 0이 첫번째 숫자. 

>>>a=[1,2,3,4]
>>>print(a)
[1,2,3,4]

#리스트의 길이 출력
>>>len(a) 
4

#첫 원소 확인
>>>a[0]
1

# 값 변경
>>>a[1]=100
>>>print(a)
[1,100,3,4]

 

1-5) 딕셔너리

딕셔너리는 키와 값을 한 쌍으로 저장하여 짝지어 저장한다. 

>>>me={'height':150}
>>>me['hegiht']
150

 

1-6) bool

True(참)와 False(거짓)라는 두 값 중 하나 취합. and, or, not 연산자를 사용할 수 있다.

>>>hungry=True
>>>sleepy=False

>>>not hungry
False

>>>hungry and sleepy
False

>>>hungry or sleepy
True

보통 loop를 돌 때 조건문이 참 또는 거짓인 경우에 반복 조건을 줄 때 사용하는 기법 중 하나이다. 

 

1-7) if 문

조건에 따라서 달리 처리하려면 if/else 문을 사용합니다.

>>>hungry=True
>>>if hungry:
       print("I am hungry")

...
I am hungry

파이썬에서는 공백 문자가 중요하다. 들여쓰기는 지난 조건 (if hungry)가 충족될 때 실행되는 코드를 뜻한다. 

>>>hungry=False
>>>if hungry:
       print("I am hungry")
   else:
       print("I am not hungry")
       print("I am sleepy")
...
I am not hungry
I am sleepy

 

1-8) for문

반복(루프)처리에는 for문을 사용한다. for in 구문을 사용하면 각 원소에 차례로 접근 가능하다.

>>>for i in [1,2,3]:
       print(i)
...
1
2
3

 

1-9) 함수

특정 기능을 수행하는 명령들을 묶어 하나의 함수로 정의할 수 있다. 

>>>def hello():
       print("hello")
       
>>>hello()
hello

함수는 인수를 취할 수 있다.

>>>def hello(object):
       print("hello"+object+"!!!")
...
>>>hello("dog")
hello dog !!!

 

1-10) 클래스

머신러닝을 하면서 클래스가 가장 헷갈릴 수 있다. 앞에서 int , str등의 자료형을 확인했다. 직접 클래스를 정의하면 독자적인 자료형을 만들 수 있다. 또 그 클래스만의 전용 함수와 속성을 정의할 수 있다. class를 사용하여 클래스를 정의한다.

class 클래스 이름:
    def __init__(self, 인수,...): #생성자
      ...
    def 메서드 이름 1(self, 인수,...): #메서드 1
      ...
    def 메서드 이름 2(self, 인수, ...):  #메서드 2

__init__는 클래스를 초기화하는 방법을 정의한다. 이것을 생성자라고도 하고 클래스의 인스턴스가 만들어 질 때 한번만 불린다. 매서드의 첫번째 인수로 자신을 나타내는 것을 self를 쓰는 것이 특징이다.

class Man:
     def __init__(self,name):
         self.name=name
         print("start")
         
     def hello(self):
         print("hi"+self.name)
         
     def goodbye(self):
         print("goodbye"+self.name)
 
m=Man("Luke")
m.hello()
m.goodbye()

위의 결과를 돌리면 

start

hi Luke

goodbye luke

 

위의 결과가 나온다. 여기서는 Man이라는 클래스를 정의하였다. 그리고 m이라는 인스턴스(객체)를 생성한다. Man의 생성자(초기화 메서드)는 name이라는 인수를 받고, 그 인수로 인스턴스 변수인 self.name을 초기화 한다. 

 

반응형

'인공지능' 카테고리의 다른 글

[밑바닥부터 시작하는 딥러닝] chapter2: 퍼셉트론  (0) 2022.08.15

댓글