728x90

기본 환경: IDE: VS code, Language: Python

 

ANN 기본 모델 구축

# ann_model.py


import numpy as np


# 1. Refined Deta
x = np.array([1, 2, 3])
y = np.array([1, 2, 3])


# 2. Model Construction
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
model.add(Dense(1, input_dim=1))


# 3. compile and training for best weight, minimum loss
model.compile(loss='mae', optimizer='adam')
model.fit(x, y, epochs=10)


# 4. Evaluation and Prediction
result1 = model.predict([4])
print('result1: ', result1)


# 5. ect
model.fit(x, y, epochs=1000)
result2 = model.predict([4])
print('result2: ', result2)

model.fit(x, y, epochs=3000)
result3 = model.predict([4])
print('result3: ', result3)



'''
result1
Epoch 100/100
Result1:  [[4.001488]]

result2
Epoch 1000/1000
Result2:  [[3.9903853]]


result3
Epoch 3000/3000
Result3:  [[4.000531]]

'''

Source Code 원본 주소: basic_ML_model.py

 

코드 해석

import numpy as np

: numpy* import 및 약칭 np 지정

* numpy: 다차원 배열, n*n 행렬 등을 고속으로 처리할 수 있도록 도움을 주는 Python Library로, Numpy를 통해 생성한 배열을 ndarray(N-Dimension Array)라고 함

numpy library를 import하여 numpy에서 제공하는 다양한 method를 사용할 수 있음

 - np.shape: ndarray의 dimension 구성 반환

 - np.dtype: ndarray의 data type 반환

 - np.ndim: ndarray의 dimension 수 반환

 - np.size: ndarray의 data 개수 반환

# useful_method_from_numpy.py

import numpy as np

x = np.array([[1, 2, 3, 4],
             [2, 3, 4, 5],
             [3, 4, 5, 6]])

print(x.shape) # (3, 4)
print(x.dtype) # int32
print(x.ndim) # 2
print(x.size) # 12

y = np.array([1,2,3])
print(y.ndim) # 1

z = np.array([[[1],[2]],[[11],[22]]])
print(z.ndim) # 3

Source Code 원본 주소: useful_method_from_numpy.py

 

model = Sequential()

순차모델 사용, 신경망 계층을 순차적으로 더하여 순차 모델로 불리며 신경망을 구성하는 방법 중 가장 기본적인 방법

차후, 복잡한 모델을 구성할 때에는 함수형 모델*(Functional Model)을 사용할 수 있음

* 함수형 모델은 신경망 계층을 순차적으로 계산하지 않을 수 있음

 

➕ Functional Model

# 2. Model(Function)
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input
input1 = Input(shape=(13,)) # input_shape=(13,)
dense1 = Dense(50, activation='relu')(input1) # Hidden Layer
dense2 = Dense(40, activation='sigmoid')(dense1)
dense3 = Dense(30, activation='relu')(dense2)
dense4 = Dense(20, activation='linear')(dense3)
output1 = Dense(1, activation='linear')(dense4) # output=1
model = Model(inputs=input1, outputs=output1) # Model Construction 끝 부분에서 최종적으로 input과 out을 정리

# Sequential model과 달리 dense를 직접 입력할 수 있으므로 순차적으로 계산하지 않을 수 있음
# (Sequential에서 2번째 layer 층을 순서를 옮겨서 4번째 layer 층으로 만들 수 있음)
# Sequential model과 달리 dense를 skip 할 수 있음

 

model.add(Dense(1, input_dim=1))

모델에 Dense Layer를 순차적으로 추가

Dense layer는 인공신경망(Artifical Neuron Network)에서 사용되는 레이어로, 입력과 출력을 연결시켜주는 역할을 함

layer의 종류로는 Dense 외에도 Convolution, MaxPooling, Flatten 등이 있음

 - Dense의 첫 번째 인자: 출력 뉴런수

 - Dense의 두 번째 인자: 입력 뉴런수

 

model.compile(loss='mae', optimizer='adam')

구성한 모델을 실제로 생성

loss를 측정하는 방법으로는 mae(mininum absolute error) 사용

MAE explaination image

오차를 보정하는 방법으로는 adam 사용

 

model.fit(x, y, epochs=10)

모델을 훈련하는 과정

 - fit의 첫 번째 인자: x_train_data

 - fit의 두 번째 인자: y_train_data

 - fit의 세번째 인자: epochs, 훈련 횟수

⚠️ 초기 weight가 랜덤값이므로 실행 시 마다 훈련 결과가 달라짐

⚠️ epochs가 과하게 높을 경우, 과적합(Overfitting) 문제가 발생할 수 있으므로 유의

 

➕ fit(verbose)에 따른 출력 형태 타입

model.fit(x, y, epochs=10, verbose=0)
'''
Result
진행과정 나오지 않음
'''

model.fit(x, y, epochs=10, verbose=1)
'''
Result
Epoch 50/50
323/323 [==============================] - 0s 762us/step - loss: 45.8877 - val_loss: 38.3869
'''

model.fit(x, y, epochs=10, verbose=2)
'''
Result
Epoch 50/50
323/323 - 0s - loss: 43.5736 - val_loss: 33.5931 - 214ms/epoch - 664us/step
'''

model.fit(x, y, epochs=10, verbose=3)
'''
Result # verbose = 3 이상
Epoch 50/50
'''

 

소스 코드

🔗 HJ0216/TIL

 

728x90
728x90

Machine Learning의 정의

: Machine Learning is defined as a technology that is used to train machines to perform various actions such as predictions, recommendations, estimations, etc., based on historical data or past experience.

Machine Learning enables computers to behave like human beings by training them with the help of past experience and predicted data.

기계 학습은 과거 데이터나 경험을 기반으로 예측, 추천, 추정 등과 같은 다양한 작업을 수행하도록 기계를 훈련시키는데 사용되는 기술로 정의된다. 또한 기계 학습으로 과거 경험과 예측 데이터를 통해 컴퓨터가 인간처럼 행동할 수 있도록 한다.

 

 

Machine Learning의 과정

1. y = wx + b 형태의 임의의 예측 함수 생성

(y: 결과값, w, weight: 가중치, x: 대입값, b, bias: 치우침)

2. 과거 데이터나 경험을 기반으로 (x, y)를 대입하여 최소의 오차(loss, error, cost)를 만드는 최적의 가중치(weight) 탐색

3. 최적 예측 함수에 추정 필요 데이터 입력 및 자료 획득

 

 

Machine Learning Model Construction을 위한 준비물

 - TensorFlow FrameWork*: 언어(Python 등), 제공자(Google)

 - PyTorch FrameWork: 언어(Python 등), 제공자(FaceBook)

(*FrameWork: 코드에 큰 틀(Frame)을 제공하여 개발의 편의성을 올려주는 도구)

 - TensorFlow를 사용하기 위한 통합개발환경(IDE): VS code, Jupyter notebook, Pycharm 등

 

학원에서 사용 중인 Tensorflow FrameWorkPython, IDE: VS code를 중심으로 기술합니다.

TensorFlow

TensorFlow

: Google에서 만든 딥러닝 프로그램을 쉽게 구현할 수 있도록 다양한 기능을 제공해주는 오픈 소스 📚라이브러리*

(*Library: 다른 개발자들이 특정 기능을 수행하기 위해 작성해놓은 코드 뭉치)

: Tensor(다차원 배열*) Flow(흐름)

* 다차원 배열

출처: furkangulsen.medium.com

 

TensorFlow를 사용하기 위한 언어: Python

 

Machine Learning을 수행함에 있어 Python을 직접적으로 설치하는 대신 Machine Learning에 사용되는 다양한 기능들이 기본적으로 포함된 Python 배포판 Anaconda3 사용

+ conda라는 환경/패키지 설정 관리자가 존재하여 독립된 작업 환경을 갖춘 가상환경 구축에 유리

 

 

⭐ 환경 설정

1. Google: Anaconda Download

2. Google: Visual Studio Code Download

3. Anaconda Prompt 실행

4. conda 명령어를 통한 가상환경 구축

 4.1. conda list: 설치된 Python pkg/library 목록

 4.2. conda env list /conda info —envs: 구축된 가상 환경 목록

 4.3. conda create -n 가상환경_이름 python==3.9.7 anaconda: Python version 3.9.7 설치 및 Anaconda에 포함된 기본 pkg 설치 

 4.4. conda active 가상환경_이름: 가상환경 접속

(⚠️ 가상환경 접속 후 prompt 창에 (가상환경_이름) 표시 확인)

 4.5. conda info: 현재 접속중인 가상환경 정보 표시

 

 유용한 conda 명령어

 conda deactivate: 현재 접속중인 가상환경 비 활성화

 conda remove --name 가상환경_이름 --all: 가상환경 삭제

(⚠️ Conda Environment Error: caanot remove current environment: 현재 활성화되어있는 상태에서 해당 가상환경을 삭제하려고 할 때 발생하는 에러로 반드시 비활성화를 시킨 후 삭제해야 함)

참조: 아나콘다(Anaconda) 가상환경 사용법

 

5. Python Library의 간편한 사용을 위한 환경 추가 구축

: Python Library는 Python pkg Index(PyPI)에서 다운로드 후 사용 가능

-> 시간이 오래 소요되고 복잡한 방법이므로 이러한 작업들을 대신 수행해주는 ‘pip’라는 Python pkg 설치 및 관리하는 시스템을 사용

(⚠️ Python 버전에 따라 pip가 내장되어있는 경우도 있으므로 설치 전 확인)

 5.1. pip가 미설치된 경우

  5.1.1. python이 설치된 가상환경 안에서 curl <https://bootstrap.pypa.io/get-pip.py> -o get-pip.py

  5.1.2. python get-pip.py

 5.2. pip가 설치된 경우

  5.2.1. anaconda prompt에서 python이 설치된 가상환경에 접속 후 tensorflow 설치

  pip install tensorflow-cpu==2.7.4

  (⚠️ cpu 버전을 안 쓰면 최신 버전이 설치됨)

  (pip install tensorflow: cpu, gpu에 tensorflow 설치)

 

⭐ 활용: sklearn(scikit-learn) version 수정

1. anaconda prompt 실행

2. 가상환경 접속: activate tf27

3. 설치된 pkg 목록 확인: pip list

4. scikit-learn 설치 삭제: pip uninstall scikit-learn

5. scikit-learn 설치: pip install scikit-learn

(⚠️ pip install scikit-learn==1.1.3: 1.1.3 버전 설치)

(⚠️ sklearn install → 버전 미 입력 시, 최신 버전 설치)

 

 유용한 pip 명령어 list

pip install --upgrade pip: pip version upgrade

pip install pip=="원하는 버전": pip version downgrade

pip list: 설치 완료된 패키지 확인

pip install "pkg_name": 패키지 설치

pip install "pkg_name==version": 원하는 버전의 패키지 설치

pip uninstall "pkg_name": 패키지 제거

pip show "pkg_name": 설치완료 패키지 세부 정보 확인

 

 

6. 통합개발환경(IDE*: Integrated Development Envirnment)에서 가상환경 사용하기

* IDE: 프로그램 개발과 관련된 모든 작업을 하나의 프로그램안에서 처리할수 있는 환경을 제공하여 효율적으로 소프트웨어를 개발할 수 있도록 도와주는 도구

IDE가 제공하는 기능 4가지

 6.1. 코드 편집 기능

 6.2. 디버거 기능(코드에 문제가 없는지 확인할 수 있도록 하는 기능)

 6.3. 컴파일러 기능(작성된 코드를 기계어로 변환해주는 기능)

 6.4. 인터프리터 기능(코드를 한 줄씩 순차적으로 실행시키는 기능)

IDE의 종류: Spyder, Jupyter Notebook, VS code, Pycharm 등

참조: [Python] 통합개발환경(IDE) 정의 및 구성

 

VS code 실행 후, 확장자: python, python for VS Code, python Extension Pack, python Indent 설치

VS code Terminal 창

오른쪽 하단부를 (3.9.7(”tf27”: conda))로 변경: interpreter 클릭 후 anaconda에서 생성한 가상환경 tf27로 접속

 

 

 


⭐ 가상환경 구축 요약 ⭐

1. Anaconda3 download

2. Local disk C에 Anaconda3 폴더 생성 후 설치 시, 경로 지정

3. Visual Studio Code download

4. VS Code 사용 시, 파일을 저장 할 폴더 생성 후 설치 시, 경로 지정

(⚠️ Local disk C의 사용자 폴더 내에 생성 시, 접근 권한 문제 발생하므로 사용자 폴더 밖으로 폴더 생성)

5. Anaconda Prompt 실행 후, conda env list로 가상환경 list 확인

(⚠️ 가상 환경 안에서 conda env list할 경우, 해당 가상환경이 보이지 않으므로, base 상태에서 하기)

6. conda create -n 가상환경_이름 python==3.9.7 anaconda: 가상환경에 python v3.9.7 및 anaconda 설치

7. activate 가상환경_이름: 가상환경에 접속 후, pip install tensorflow-cpu==2.7.4: cpu v2.7.4에 tensorflow 설치

8. VS code 실행 후, 인터프리터(오른쪽 하단)를 생성한 가상환경으로 변경

(⚠️ VS code를 먼저 실행한 경우, 새롭게 생성한 가상환경이 보이지 않을 수 있으므로 껐다 켜보기)

VS Code-Interpreter 선택창

9. 파일명.py(python 확장자)으로 파일 생성 후, VS Code 설치 시 지정한 경로에 파일이 생성되었는지 확인

 

 

 

소스 코드

🔗 HJ0216/TIL

728x90

'Naver Clould with BitCamp > Aartificial Intelligence' 카테고리의 다른 글

Scalar, Vector, Matirx, Tensor  (0) 2023.01.20
MultiLayer Perceptron  (0) 2023.01.20
Hyper-parameter Tuning  (0) 2023.01.20
Types of Artificial Neural Networks  (0) 2023.01.15
ANN Model Construction  (0) 2023.01.15