[파이썬/Python] 케라스 그리고 텐서플로우
아직 내게 어떤 프레임툴이 편한지 잘 모르겠다.
확실히 케라스가 직관적이고 쉽긴하다.
케라스
from keras.models import Model, load_model
from keras.layers import Input, Dense
from keras.callbacks import ModelCheckpoint, TensorBoard
from keras import regularizers
input_dim = X_train.shape[1]
encoding_dim = 14
input_layer = Input(shape=(input_dim, ))
encoder = Dense(encoding_dim, activation="tanh",
activity_regularizer=regularizers.l1(10e-5))(input_layer) # activity_regularizer = regularizers
encoder = Dense(int(encoding_dim / 2), activation="relu")(encoder)
decoder = Dense(int(encoding_dim / 2), activation='tanh')(encoder)
decoder = Dense(input_dim, activation='relu')(decoder)
autoencoder = Model(inputs=input_layer, outputs=decoder)
encoder 두개, decoder 2개
autoencoder 에 모델(inputs=input_layer, outputs=decoder)
Dense(encoding_dim, activation="tanh", activity_regularizer=regularizers.l1(10e-5))(input_layer)
Regularization : 과대적합을 피하는 처리 과정
https://wdprogrammer.tistory.com/33
Regularization과 딥러닝의 일반적인 흐름 정리
<!doctype html> 2019-01-13-deeplearning-flow- 최적화(optimization) : 가능한 훈련 데이터에서 최고의 성능을 얻으려고 모델을 조정하는 과정 일반화(generalization) : 훈련된 모델이 이전에 본 적 없는 데이..
wdprogrammer.tistory.com
텐서플로우 (거기에 케라스를 곁들인..)
from tensorflow import keras
# 모델을 만들 때, input_shape와 ouput_shape를 항상 유의!
model = keras.Sequential(
[
keras.layers.Dense(
256, activation="relu", input_shape=(train_features.shape[-1],)
),
keras.layers.Dense(256, activation="relu"),
keras.layers.Dropout(0.3),
keras.layers.Dense(256, activation="relu"),
keras.layers.Dropout(0.3),
keras.layers.Dense(1, activation="sigmoid"),
]
)
model.summary()
케라스와는 다르게 텐서플로우에는 dropout 층이 있음. << 케라스에서의 Regularization과 비슷한듯?
모델이 깊어짐에 따라 너무 열심히 학습을 하게 되는데
너무 똑똑해지는 걸 방지하기 위해(과적합 방지) 인간처럼 기억을 까먹을 수 있게 한 것이 드롭아웃
=> 일반화(Regularization) 능력을 키워 test data에 대한 예측률을 높이는 방법
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=isu112600&logNo=221578533182
[고군분투 머신러닝] Dropout개념, 설명, Dropout과 앙상블, 텐서플로우 Dropout
처음 Dropout을 접했을 때 아 그거~~ Overfitting 막기 위해 쓰는거구나~~ 하고 간단하게 넘겼는데 생각...
blog.naver.com