티스토리 뷰
이번 포스팅은 텐서보드의 사용방법 입니다.
기계 학습에서 무언가를 개선하려면 측정 할 수 있어야합니다. 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/ 링크를 클릭해주시거나 브라우저에서 주소를 입력해주시면 됩니다.
위와 같이 텐서보드를 실행하실 수 있습니다.
'Programming Languages > Python' 카테고리의 다른 글
명령 프롬프트에서 파이썬 버전 확인 (0) | 2022.01.27 |
---|---|
matplotlib 라이브러리로 keras 학습결과 살펴보기 (0) | 2020.09.14 |
AttributeError: 'tuple' object has no attribute 'layer' 오류 (0) | 2020.09.10 |
import OS , 디렉토리 관련 자주 쓰는 매서드 (0) | 2020.09.09 |
Python 코드를 exe (실행파일)로 변환하기 (0) | 2020.09.04 |