티스토리 뷰

본격적으로 인공지능을 실습하기 전 Python의 여러 라이브러리를 소개합니다.

해당 라이브러리에 대한 실습 및 사용 예시들은 따로 작성해 추가할 예정입니다.

 

 


 

Python(파이썬)은 머신러닝 프로젝트의 언어로 많이 선택되는 대표적인 언어입니다. 파이썬의 여러 라이브러리를 이용해 우리는 상위 레벨에서 쉽게 딥러닝까지 다룰 수 있습니다.

 

 

Numpy

Numpy(넘파이)는 과학 및 공학 분야에서 널리 사용되는 파이썬의 오픈소스 라이브러리입니다. 기존 파이썬에서 제공하는 리스트보다  빠른 계산 속도를 가진 ndarray(다차원 배열) 배열을 사용할 수 있도록 해줍니다. 리스트는 굉장히 강력한 자료구조이지만 데이터가 비연속적인 위치에 저장되기 때문에, 딥러닝과 같이 대량의 데이터를 처리해야 하는 경우에는 효율적이지 않습니다. 넘파이는 벡터 및 행렬, 선형대수 연산과 같은 다양한 수학적인 행렬 연산을 수행하는 데에 유용합니다. 때문에 넘파이는 인공지능의 분야 외에도  Pandas, Matplotlib 등 많은 데이터 과학 패키지의 근간에서 사용되고 있습니다.

 

 

NumPy

Powerful N-dimensional arrays Fast and versatile, the NumPy vectorization, indexing, and broadcasting concepts are the de-facto standards of array computing today. Numerical computing tools NumPy offers comprehensive mathematical functions, random number g

numpy.org

 

+ 2022.09.01 추가

 

[인공지능] Numpy 기본 사용 + 딥러닝 express 연습문제 2장

아래 글에 이어 작성된 글입니다. [인공지능] 딥러닝과 Python 라이브러리 본격적으로 인공지능을 실습하기 전 Python의 여러 라이브러리를 소개합니다. Python(파이썬)은 머신러닝 프로젝트의 언어

munak.tistory.com

 

 

Matplotlib

matplotlib(맷플롯립)은 데이터를 각종 그래프로 시각화하는데에 사용되는 라이브러리입니다. 학습 전 데이터를 이해하기 위한 시각화나 학습 후 결과를 시각화하기 위해 주로 사용됩니다.

 

 

 

Matplotlib — Visualization with Python

seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical data visualization Cartopy Cartopy is a Python package des

matplotlib.org

 

 

 

 

Scikit-learn

Scikit-learn(사이킷런)은 전통적인 머신러닝 라이브러리입니다. 베이즈분류나 서포트 벡터 머신(SVM), 결정 트리와 같은 다양한 분류 방법, 회귀, 클러스터링 등 대체로 클래식한 머신러닝 모듈을 포함하고 있습니다. 앞서 살펴본 MLP까지 지원하며, 대표적인 데이터 셋인 붓꽃(iris) 데이터나 당뇨병 데이터 등도 제공합니다.

 

 

scikit-learn: machine learning in Python — scikit-learn 1.1.2 documentation

Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning Algorithms: grid search, cross validation, metrics, and more...

scikit-learn.org

 

+ 2022.09.07 추가

 

[인공지능] Scikit-learn(Sklearn) 사용하기

+ 주석 없는 코드 [인공지능] 머신러닝과 인공신경망 (feat. 분류, 회귀) 아래 글에 이어 작성된 글입니다. [인공지능] 전문가 시스템과 지식 아래글에 이어 작성된 글입니다. [인공지능] 탐색 아래

munak.tistory.com

 

 

 

Tensorflow 

Tensorflow(텐서플로우) 구글이 만든 머신러닝 라이브러리로 후술 할 심층 신경망(DNN), 컨벌루션 신경망(CNN) 등의 딥러닝 모듈들을 지원합니다. 내부적으로는 C/C++로 구현되어있고 파이썬을 비롯해 여러가지 언어에서 접근할 수 있도록 인터페이스를 제공하고 있습니다. 신경망구현이 다소 복잡하여 사용이 어렵습니다.

 

+ Tensorflow는Tensor(물리학에서 다차원배열을 의미)와 Flow(데이터플로우를 의미)가 합쳐진 이름이다!

 

 

TensorFlow

모두를 위한 엔드 투 엔드 오픈소스 머신러닝 플랫폼입니다. 도구, 라이브러리, 커뮤니티 리소스로 구성된 TensorFlow의 유연한 생태계를 만나 보세요.

www.tensorflow.org

 

 

 

 

Keras

Keras(케라스)는 좀 더 추상화된 고수준 딥러닝 API로, 텐서플로우보다 좀 더 쉽게 코드를 짤 수 있도록 만들어진 라이브러리입니다. 여러 백엔드를 선택할 수 있지만 보통 텐서플로우를 사용합니다. (텐서플로우를 설치하면 케라스가 자동 설치된다!)  빠른 실험를 중점에 두고 개발되었기 때문에 쉽고 빠른 프로토타이핑이 가능하며, CPU와 GPU 실행을 지원합니다. 또 여러 신경망의 다양한 조합을 지원한다는 특징이 있습니다.

 

 

 

Keras: the Python deep learning API

State-of-the-art research. Keras is used by CERN, NASA, NIH, and many more scientific organizations around the world (and yes, Keras is used at the LHC). Keras has the low-level flexibility to implement arbitrary research ideas while offering optional high

keras.io

 

 

케라스의 핵심 구조는 모델(model)입니다. 모델이란 신경망의 층, 즉 레이어를 구성하는 방법으로 그중 가장 간단한 기본모델인 Sequential(선형 스택 모델)을 사용하면 신경망을 레고 조립하듯이 차례대로 쌓아 구현할 수 있습니다. 입력데이터로는 넘파이배열과 TensorFlow Dataset 객체, 파이썬 제너레이터를 허용합니다. 케라스를 이용한 신경망 구축에 필요한 요소들은 다음과 같습니다.

 

모델 : 하나의 신경망

레이어 : 신경망을 이루는 하나의 층

입력데이터 : (다차원 배열의 형식을 가진 데이터를 준비한다.)

손실함수 : 신경망의 출력과 정답 레이블간의 차이(손실)을 측정하는 함수

옵티마이저(optimizer) : 학습률과 모멘텀을 동적으로 변경하는 최적화 알고리즘

 

 

다음은 케라스로 MLP를 구현하고 XOR 연산을 학습하는 코드 예시입니다.

 

import numpy as np
import tensorflow as tf

# 입력데이터
X = np.array([[0,0], [0,1],[1,0],[1,1]])
y = np.array([[0],[1],[1],[0]])

# Sequential 모델을 생성
model = tf.keras.models.Sequential()

#Sequential 모델에 add() 함수를 이용하여 필요한 레이어를 추가
model.add(tf.keras.layers.Dense(units=2, input_shape=(2,), activation='sigmoid')) 
model.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))

# compile() 함수를 호출하여서 Sequential 모델을 컴파일
model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.SGD(lr=0.3))

# fit()를 호출하여서 학습을 수행한다.
model.fit(X, y, batch_size=1, epochs=10000)

# predict()를 호출하여서 모델을 테스트한다
print(model.predict(X))

 

 

+ 2022.09.16 추가

 

 

[인공지능] Keras로 MNIST 숫자 학습하기 (feat. Sequential 모델)

Keras의 Sequential 모델을 사용해 MNIST 숫자를 학습시키고 테스트합니다. Google의 Colab 환경에서 실행합니다. Google Colaboratory colab.research.google.com Sequential 모델 Sequential 모델은 피드포워드..

munak.tistory.com

 

 

[인공지능] 딥러닝 express 연습문제 7장

[딥러닝 express]의 연습문제 7장 풀이입니다. (개인적인 풀이기에 오답이 있을 수 있습니다!) 08. 케라스를 이용하여, 우리가 5장에서 학습한 초기 신경망인 퍼셉트론을 구현할 수 있을까? 케라스를

munak.tistory.com

 

 

 

이 외에도 텐서플로우의 라이벌 격이었던 머신러닝 라이브러리 PyTorch(현재는 개발이 활발히 이루어지지 않는 상태)와 Numpy와 같이 데이터 정제 및 분석에 널리 사용되는 pandas가 있습니다. 

 

 

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

 

 

pandas - Python Data Analysis Library

pandas pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language. Install pandas now!

pandas.pydata.org

 

 

위 공식 사이트들에서는 머신러닝 가이드를 제공하고 있습니다. 모두 이해하기에는 내용이 많고 처음 접해보시는 분들은 생소할 수 있으나 정확하고 깊은 이해를 위해서는 피할 수 없는 과정이라고 생각합니다. 이어서 연습문제를 바탕으로 라이브러리의 기본적인 사용법이나  실습한 내용을 작성해 보도록 하겠습니다.

 

 

감사합니다.

 

 

 


 

공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.

댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday