Statictics & Math & Data Science/파이썬 데이터 분석

[케라스(keras)] 케라스에서 텐서보드 사용하기-Tensorboard with Keras

Taewon Heo 2019. 1. 21. 15:19

[케라스(keras)] 케라스에서 텐서보드 사용하기-Tensorboard with Keras


케라스로 만든 모델을 텐서보드에서 확인하는 방법입니다.

기존에 만든 모델에 3줄만 추가해주면 됩니다. 아래 노란색 주석을 참고해주세요.


from keras.datasets import mnist
from keras.utils import to_categorical
from tensorflow.python.keras.callbacks import TensorBoard ## TensorBoard 를 import합니다.
from time import time ## Log를 만들때 사용합니다.
from keras import layers
from keras import models

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# sp = np.shape(train_images) #(60000, 28, 28) 28x28 그림 60000장

train_images = train_images.reshape((60000, 28, 28, 1)) # <class 'numpy.ndarray'>
train_images = train_images.astype('float32') / 255 # <class 'numpy.ndarray'>
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype('float32') / 255

train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

model = models.Sequential() # Sequential method로 모델 구성
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1), padding='same'))
model.add(layers.MaxPooling2D(2, 2))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D(2, 2))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
print(model.summary())


tensorboard = TensorBoard(log_dir="logs/{}".format(time())) ## 이 줄과

model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64, callbacks=[tensorboard]) ## 이 줄을 추가합니다.

test_loss, test_acc = model.evaluate(test_images, test_labels)


위의 코드를 한번 실행시키고 커맨드창을 열어 텐서보드를 실행시켜줍니다. 

현재 경로로 이동하고 tensorboard --logdir=logs(로그가 저장되어 있는 폴더명)



처음에는 커맨드라인에 나온 http://컴퓨터이름:6006으로 접속했더니 페이지가 안열렸습니다.

그래서 localhost:6006으로 다시 접속하니 정상 실행됐습니다.



사용방법은 https://www.youtube.com/watch?time_continue=1255&v=eBbEDRsCmv4에 잘 나와있습니다.