본문 바로가기

카테고리 없음

[인공지능 특강] 파이썬/데이터/인공지능 학습용 기초개념

1. 파이썬 기초개념

  • 파이썬은 어떤 언어?
    • 모든 것은 "객체": 객체지향 프로그래밍 언어
    • 동적 Type언어: 변소는 "포스트잇"
    • 스크립트형 언어(인터프리터형 언어): 한 줄씩 위에서부터 읽어나가며 실행
    • 실행 Scope은 띄어쓰기(indent)로 구분
      • 보통 1탭=4스페이스, 4스페이스 띄어쓰기를 대부분 사용
  • 변수와 타입
    • 변수
      • 파이썬은 특별한 선언문 없이 변수 할당이 가능
      • 타입은 파이썬 프로그램이 실행되는 순간 정해짐
        • Type을 Hint해줄 수 있음
        • my_name.str = "bbirong"
          # '에러' 용도가 아니라 'Hint' 용도
          # 즉, Exception이 발생하지 않음
      • Python 변수 이름 규칙
        • 문자 혹은 _ 로 시작
        • 대소문자 구별
        • 이미 지정된 변수는 사용 불가
          • set, list, dict, True, False, def, class ...
    • 타입
      • 문자열 (String 객체)
        • my_atr = 'abCdEfG '
          
          my_str.count('a') # 1
          my_str.isdigit() # False
          my_str.lower() # 'abcdefg '
          my_str.upper() # 'ABCDEFG '
          my_str.replace('ab', 'hello') # 'helloCdEfg '
          my_str.startwith('ab') # True
          my_str.strip() # 'abCdEfG'
      • 정수 (정수형 int)
        • 10진법 정수형
        • int(x)는 x(변수)를 정수로 바꾸어줌
          • int('1234') # 1234
            int(1.83) # 1
        • python3에서의 int는 메모리가 허용하는 범위 안에서 무제한 범위
        • 연산자 사용 가능
          • + - * / % < > <= >=
        • 연산 비용이 저렴하다(빠르다)
      • 실수 (실수형 float)
        • 10진법 실수형
        • 정확하지 않음
        • float(x)는 x를 실수로 바꾸어줌
        • 메모리가 허용하는 안에서 크고 작은 값을 가짐
      • 순서열 자료형
        • 반복가능한(iterable)
        • 순서가 있는(index)
        • 객체의 모음
        • my_list = ['a', 'b', 1, w, ['c', 'd']] # 리스트 안의 리스트
          my_tuple = [1, 2, 'q', 'w', ) # 튜플
      • 리스트
        • 순서가 있는 상자
        • 목록과 같음
        • index 0부터 시작
        • 값을 추가/삭제/변경 가능
      • 튜플
        • 순서가 있는 '변경 불가능한' 상자
        • '변경 불가능':
          • 구성물의 추가/삭제/변경 불가
          • 변수 자체를 다른 것에 붙이는 것은 가능 (변수는 상자가 아니라 포스트잇: 얼마든지 다른 객체에 붙일 수 있음)
        • 하지만 튜플 내부의 객체가 '변경가능한 객체'라면 내부 객체는 변경 가능
        • 튜플 간 +연산 가능
      • 사전 dict
        • {Key:Value} 형식의 순서 없는 키:값의 모임
        • Key는 한 dict 안에서 유일
        • 기존 키에 새로운 값을 할당할 경우 기존 값은 사라짐
        • tel = {'jact' : 4098, 'sape' : 4139}
          tel['guido'] = 4127 # tel에 값 추가
          print(tel)
          del tel['sape'] # tel의 'sape' 삭제
          keys = list(tel.keys())
          s_keys = sorted(tel.keys()) # key들만 정렬한 것
          print(keys, s_keys)
          print('guido' in tel)
      • 집합 set
        • 중복이 없는, 순서 없는 모임
        • set(리스트/튜플) ➡ 집합
        • 집합 연산 가능 (합+/차-/곱*/여not)
        • { } 기호로 표시 ( 빈 { }는 빈 dict를 만듦. 빈 set을 만들려면 set() 사용)
      • 바이트 (Byte 객체)
        • String을 '인코딩(encode)'한 것이 Byte
        • Byte를 '디코딩(decode)'한 것이 String
        • 인코딩( .encode() ) : 사람이 볼 수 있는 문자(str)를 컴퓨터가 읽을 수 있는 ASCII 코드로 바꿔 주는 것
        • 디코딩 (.decode() ) : 컴퓨터가 읽을 수 있는 ASCII 코드를 사람이 읽을 수 있는 문자로 바꿔주는 것
        • string = 'string abc'
          byte = string.encode('utf-8')
          
          kor_str = '한글'
          kor_byte = kor_str.encode('utf-8')
          
          print(string, byte, kor_str, kor_byte)
          # string abc b'string abc' 한글 b'\xed\x95\x9c\xea\xb8\x80'

 

 

 

 

2. 데이터 기초개념

차원

 

1) 스칼라

   a. 1차원 변수

2) 벡터

   a. 배열

3) 매트릭스

   a. 2차원 배열

4) 텐서

   a. 3차원 배열

5) N차원 텐서

 

 

3. 인공지능 학습용 기초개념

1) 신경망

출처: https://heung-bae-lee.github.io/2019/12/06/deep_learning_01/

 

2) epoch & batch

 

 

3) BP (Back Propagation)