본문 바로가기
AI-driven Methodology/Artificial Intelligence

[AI] Basic Architecture

by goatlab 2022. 7. 17.
728x90
반응형
SMALL

TensorFlow

 

TensorFlow는 텐서 (Tensor)를 흘려 보내면서 (Flow) 딥러닝 알고리즘을 수행하는 프레임워크이다.

 

① 사용자 친화적 (Keras as High Level API)

② 코드 가독성과 직관성을 높이는 Eager Execution 적용

https://www.einfochips.com/blog/deep-learning-frameworks/
https://dschloe.github.io/python/tensorflow2.0/googlecolab/#fn:1
https://www.edureka.co/blog/keras-vs-tensorflow-vs-pytorch/

 

Keras

 

Keras 창시자 프랑소와 숄레 (François Chollet)가 TF 2.0 개발에 참여하였고, TF 2.0 에서 공식적이고 유일한 High-Level API로써 Keras가 선정되었다. 또한, 프랑소와 숄레는 앞으로 native Keras 보다는 tf.keras를 사용할 것을 권장하고 있다.

 

  • 사용자 친근성 (User Friendliness) : 직관적인 API를 이용하면 ANN, CNN, RNN 또는 이를 조합한 딥러닝 모델을 쉽게 구축 할 수 있다.
  • 모듈성 (Modularity) : Keras에서 제공하는 모듈은 독립적으로 설정 가능하다. 즉, 신경망 층, 손실함수, 활성화 함수, 최적화 알고리즘, 정규화 기법 등은 모두 독립적인 모듈이기 때문에 이러한 모듈을 서로 조합하기만 하면 새로운 딥러닝 모델을 쉽게 만들고 학습시킬 수 있다.

 

Model / Layer

 

https://medium.datadriveninvestor.com/developing-with-keras-functional-api-6017828408cd

 

케라스의 모델 (model)은 신경망 자체이며, 모든 모델의 기본 단위는 층 (layer)으로 나타낸다.

 

https://developpaper.com/three-methods-of-constructing-neural-network-with-keras/

 

Keras 모델은 다양한 층 (layer)으로 이루어지는데, 이러한 층을 구성하는 방식에는 크게 Sequential API, Functional API, Subclassing API 등으로 정의할 수 있다. 초급 개발자 또는 간단한 모델은 일반적으로 Sequential API , 전문가 또는 복잡한 모델은 Functional API 기반의 모델이 주로 사용된다.

 

Keras Sequential Model

 

모델 구축 model = Sequential()
model.add(Flatten(input_shape=(1,))
model.add(Dense(2, activation=‘sigmoid’)
model.add(Dense(1, activation=‘sigmoid’)
model.add(Dense(2, activation=‘sigmoid’, input_shape=(1,))
컴파일 손실함수 종류는 정답이 실수 ‘mse’, 정답이 0 또는 1 인 이항분류 ‘binary_crossentropy’
다중 분류시 one-hot encoding한 후에 넣어주는 경우 ‘categorical_crossentropy’
다중 분류시 one-hot encoding하지 않고 정수로 넣어주는 경우 ‘sparse_ categorical_crossentropy’
학습 model.fit(x_train, t_train, epochs=10, batch_size=100, verbose=0, validation_split=0.2)
평가 / 예측 / 저장 / 로드 model.evaluate(x_test, t_test)
model.predict(x_input_data)
model.save(“model_name.h5”)
model = tensorflow.keras.models.load_model(“model_name.h5”)

 

 

Keras Functional Model

 

모델 구축 in_ = Input(shape=(1,)
x = Dense(2, activation=‘sigmoid’)(in_)
out_ = Dense(1, activation=‘sigmoid’)(x)
model = Model(inputs=in_, outputs=out_)
컴파일 손실함수 종류는 정답이 실수 ‘mse’, 정답이 0 또는 1 인 이항분류 ‘binary_crossentropy’
다중 분류시 one-hot encoding한 후에 넣어주는 경우 ‘categorical_crossentropy’
다중 분류시 one-hot encoding하지 않고 정수로 넣어주는 경우 ‘sparse_ categorical_crossentropy’
학습 model.fit(x_train, t_train, epochs=10, batch_size=100, verbose=0, validation_split=0.2)
평가 / 예측 / 저장 / 로드 model.evaluate(x_test, t_test)
model.predict(x_input_data)
model.save(“model_name.h5”)
model = tensorflow.keras.models.load_model(“model_name.h5”)
import tensorflow as tf
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Flatten, Dense, Input
from tensorflow.keras.optimizers import SGD

import numpy as np

x_data = np.array([1,2,3,4,5,6])
t_data = np.array([3,4,5,6,7,8])

input_ = Input(shape=(1,))
output_ = Dense(1, activation='linear')(input_)

model = Model(inputs=input_, outputs=output_)

model.compile(optimizer=SGD(), loss='mse')
model.summary()
Model: "model"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 input_2 (InputLayer)        [(None, 1)]               0         
                                                                 
 dense_1 (Dense)             (None, 1)                 2         
                                                                 
=================================================================
Total params: 2
Trainable params: 2
Non-trainable params: 0
_________________________________________________________________
test_input_data = np.array([-3.1, 3.0, 3.5, 15.0, 20.1])
label_data = test_input_data + 2.0

result = model.predict(test_input_data)

print(result)
print(label_data.reshape(5,1))
[[  3.5924914]
 [ -3.4766045]
 [ -4.056039 ]
 [-17.383022 ]
 [-23.293251 ]]
[[-1.1]
 [ 5. ]
 [ 5.5]
 [17. ]
 [22.1]]
728x90
반응형
LIST