티스토리 뷰

 

이번 포스팅은 텐서보드의 사용방법 입니다.

기계 학습에서 무언가를 개선하려면 측정 할 수 있어야합니다. TensorBoard는 기계 학습 워크 플로 중에 필요한 측정 및 시각화를 제공하는 도구입니다. 손실 및 정확도와 같은 실험 지표를 추적하고, 모델 그래프를 시각화하고, 임베딩을 더 낮은 차원 공간에 투영하는 등의 작업을 수행 할 수 있습니다. 


1. 먼저 텐서 보드를 import 해야 합니다.

import keras.callbacks

또는

import tensorflow.keras.callbacks

 

 

2. 텐서보드 사용을 위한 콜백함수를 정의합니다. 

만약 import keras.callbacks를 사용했다면 아래에서도 동일하게 적용해주시면 됩니다.

tb_hist = tensorflow.keras.callbacks.TensorBoard(log_dir='.\TensorBoard', histogram_freq=0, write_graph=True, write_images=True)

만약 histogram_freq=1 (기본적으로 꺼져 있음)으로 설정하면 모든 에포크마다 히스토그램 계산을 활성화합니다. 

 

 

3. model.fit() 함수에 인자로 callbacks = [tb_hist] 로 콜백함수를 넣어줍니다.

예를 들면 아래와 같습니다.

history = model.fit(x_train, y_train, batch_size=64, epochs=10, validation_split=0.2, callbacks=[tb_hist])

 

 

이제 학습을 시작하면 정해놓은 경로에 텐서보드를 위한 파일이 생성되있는 것을 확인하실 수 있습니다.


아래는 mnist를 이용해서 resNet을 구현한 예제코드입니다. 

직접 TensorBoard를 열어보기위해서 한번 실행해보겠습니다.

from tensorflow.keras.datasets import mnist
from tensorflow.keras import layers
import tensorflow.keras.callbacks
import tensorflow.keras as keras


# 1. 데이터 가져오기
(x_train, y_train), (x_test, y_test) = mnist.load_data()
img_rows, img_cols = x_train.shape[1:]

# Channel last
x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)

# 2. 레이어 구성
x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)

inputs = keras.Input(shape=(28, 28, 1), name="img")
x = layers.Conv2D(32, 3, activation="relu")(inputs)
x = layers.Conv2D(64, 3, activation="relu")(x)
block_1_output = layers.MaxPooling2D(3)(x)

x = layers.Conv2D(64, 3, activation="relu", padding="same")(block_1_output)
x = layers.Conv2D(64, 3, activation="relu", padding="same")(x)
block_2_output = layers.add([x, block_1_output])

x = layers.Conv2D(64, 3, activation="relu", padding="same")(block_2_output)
x = layers.Conv2D(64, 3, activation="relu", padding="same")(x)
block_3_output = layers.add([x, block_2_output])

x = layers.Conv2D(64, 3, activation="relu")(block_3_output)
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dense(256, activation="relu")(x)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(10)(x)

model = keras.Model(inputs, outputs, name="resnet")
keras.utils.plot_model(model, "my_first_model_with_shape_info.png", show_shapes=True)
model.summary()

# 3. 학습하기
model.compile(
    optimizer=keras.optimizers.RMSprop(1e-3),
    loss=keras.losses.CategoricalCrossentropy(from_logits=True),
    metrics=["acc"],
)
tb_hist = tensorflow.keras.callbacks.TensorBoard(log_dir='.\TensorBoard', histogram_freq=0, write_graph=True, write_images=True)
history = model.fit(x_train, y_train, batch_size=64, epochs=10, validation_split=0.2, callbacks=[tb_hist])


# 4. 학습결과
score = model.evaluate(x_test, y_test)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

 


이제 텐서보드를 실행해보겠습니다.

 

텐서보드는 실행창에서 또는 노트북에서 매직 키워드를 이용해서 사용할 수 있습니다.

 

여기에선 실행창에서 실행해보겠습니다.

 

위에서 경로를 TensorBoard 폴더로 설정했기 때문에 실행창에서 아래와 같이 경로를 입력해주시면 됩니다.

tensorboard --logdir TensorBoard

 

명령어를 실행해주시면 위의 사진처럼 http://localhost:6006/ 링크를 클릭해주시거나 브라우저에서 주소를 입력해주시면 됩니다.

 

위와 같이 텐서보드를 실행하실 수 있습니다.


 

댓글
반응형
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함