TensorFlow Dataset을 활용한 시퀀스 데이터셋 구성

window_size 예시

딥러닝 모델 만들기(LSTM)

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Conv1D, Lambda
from tensorflow.keras.losses import Huber # 시계열
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint

EarlyStopping 학습이 잘 되면 빨리 끝내고 저장

ModelCheckpoint 학습이 될 때마다 저장

차원 만들기

# 차원 만들기
model = Sequential([
    # 1차원 feature map 생성
    Conv1D(filters = 32, kernel_size = 5,
          padding = "causal",
          activation = "relu",
          input_shape = [WINDOW_SIZE, 1]),
    # LSTM
    LSTM(16, activation = 'tanh'),
    Dense(16, activation = "relu"),
    Dense(1),
])
loss = Huber()
optimizer = Adam(0.0005) # 그래프에서 0점을 찾는 가장 빠른 방법
model.compile(loss = Huber(), optimizer = optimizer, metrics = ['mse'])
# 10번 epoch 동안 val_loss 개선이 없다면 학습을 멈춘다
earlystopping = EarlyStopping(monitor = 'val_loss', patience = 10)
# val_loss 기준 체크포인터도 생성
filename = os.path.join('tmp', 'checkpointer.ckpt')
checkpoint = ModelCheckpoint(filename,
                            save_weights_only = True,
                            save_best_only = True,
                            monitor = 'val_loss',
                            verbose = 1)