Keras의 Tensorboard 콜백은 어떻게 사용합니까?


143

Keras와 신경망을 구축했습니다. Tensorboard로 데이터를 시각화하므로 다음을 활용했습니다.

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,
                            write_graph=True, write_images=True)

keras.io에 설명 된 대로 . 콜백을 실행하면을 얻지 <keras.callbacks.TensorBoard at 0x7f9abb3898>만 "Graph"폴더에 파일이 없습니다. 이 콜백을 사용한 방식에 문제가 있습니까?


3
로 설정 histogram_freq하는 것이 좋습니다 1. "histogram_freq : 모델 레이어의 활성화 히스토그램을 계산하는 빈도 (에포크 단위). 0으로 설정하면 히스토그램이 계산되지 않습니다."
Matt Kleinsmith

10
"/ Graph"는 루트 디렉토리에 디렉토리를 만들고 "./Graph"는 작업 디렉토리에 디렉토리를 만듭니다.
Matt Kleinsmith

@MattKleinsmith 0으로 설정하면 모델의 계층에 대한 활성화 및 가중치 히스토그램 만 유효성 검사 데이터를 통해 계산되지 않고 메트릭이 계속 기록됩니다.
BugKiller

logdir에 고유 한 이름을 지정하는 것이 더 좋다고 생각합니다. stackoverflow.com/a/54949146/1179925
mrgloom

답변:


219
keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

이 라인은 콜백 텐서 보드 객체를 생성합니다. 해당 객체를 캡처 fit하여 모델 의 기능에 제공해야합니다.

tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
...
model.fit(...inputs and parameters..., callbacks=[tbCallBack])

이렇게하면 콜백 객체를 함수에 제공했습니다. 훈련 중에 실행되며 tensorboard와 함께 사용할 수있는 파일을 출력합니다.

훈련 중에 생성 된 파일을 시각화하려면 터미널에서 실행하십시오.

tensorboard --logdir path_to_current_dir/Graph 

도움이 되었기를 바랍니다 !


write_images = False
abdul qayyum이

InvalidArgumentError (트레이스 백에 대해서는 위 참조) : 텐서는 [1,3,3,256,256,1]이 아니라 마지막 희미한 1, 3 또는 4의 4D 여야합니다. [[노드 : conv_3.2_2 / kernel_0_1 = ImageSummary [T = DT_FLOAT, bad_color = Tensor <유형 : uint8 모양 : [4] 값 : 255 0 ...>, max_images = 3, _device = "/ job : localhost / replica : 0 / task : 0 / cpu : 0"] (conv_3. 2_2 / kernel_0_1 / tag, ExpandDims_50)]]
abdul qayyum

그리고 진정한 아이디어가있을 때 자리 표시자가 누락 된 dtype = float?
abdul qayyum

2
그래프 탭에서 모델 아키텍처를 볼 수 있지만 스칼라 탭이 여전히 비어 있습니까?
iratzhash

1
이것은 훈련 손실 및 정확도에 대한 스칼라 만 생성합니다. fit 함수에 전달 된 validation_data에 대해 어떻게 동일합니까?
Utku Ufuk

46

TensorBoard 콜백 을 사용하는 방법은 다음과 같습니다 .

from keras.callbacks import TensorBoard

tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0,
                          write_graph=True, write_images=False)
# define model
model.fit(X_train, Y_train,
          batch_size=batch_size,
          epochs=nb_epoch,
          validation_data=(X_test, Y_test),
          shuffle=True,
          callbacks=[tensorboard])

2
tensorboard의 출력을 더 잘 구성하는 방법이 있습니까? Keras는 이와 관련하여 최적화를 수행합니까?
Nickpick

2
@nickpick 무슨 뜻인지 모르겠습니다. 그러나 나는 이것이 다른 질문에 대한 후보라고 생각합니다.
Martin Thoma

여기에 우리가 간다 : stackoverflow.com/questions/45309153/…
Nickpick

주의하는 것이 중요은이됩니다 histogram_freq=0tensorboard에 의해 어떤 히스토그램을 기록하지 않는 경우 설정 tf.summary.histogram, 그렇지 않으면 - histogram_freq0과 동일하지 않습니다!
Agile Bean

20

변화

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

tbCallBack = keras.callbacks.TensorBoard(log_dir='Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

그리고 당신의 모델을 설정

tbCallback.set_model(model)

터미널에서 실행

tensorboard  --logdir Graph/

알았습니다 AttributeError: 'TensorBoard' object has no attribute 'set_model'.
Fábio Perez

15

Keras 라이브러리로 작업 중이고 tensorboard를 사용하여 정확도 및 기타 변수의 그래프를 인쇄하려는 경우 다음 단계를 따르십시오.

1 단계 : 아래 명령을 사용하여 tensorboard를 가져 오려면 keras 콜백 라이브러리를 초기화하십시오.

from keras.callbacks import TensorBoard

2 단계 : "model.fit ()"명령 직전에 프로그램에 아래 명령을 포함 시키십시오.

tensor_board = TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)

참고 : "./graph"를 사용하십시오. "/ graph"를 사용하지 말고 현재 작업 디렉토리에 그래프 폴더를 생성합니다.

3 단계 : "model.fit ()"에 Tensorboard 콜백을 포함합니다. 샘플은 다음과 같습니다.

model.fit(X_train,y_train, batch_size=batch_size, epochs=nb_epoch, verbose=1, validation_split=0.2,callbacks=[tensor_board])

4 단계 : 코드를 실행하고 작업 디렉토리에 그래프 폴더가 있는지 확인하십시오. 위의 코드가 올바르게 작동하면 작업 디렉토리에 "Graph"폴더가 있습니다.

5 단계 : 작업 디렉토리에서 터미널을 열고 아래 명령을 입력하십시오.

tensorboard --logdir ./Graph

6 단계 : 이제 웹 브라우저를 열고 아래 주소를 입력하십시오.

http://localhost:6006

들어가면 텐서 바 우드 페이지가 열리고 다양한 변수의 그래프를 볼 수 있습니다.


주의하는 것이 중요은이됩니다 histogram_freq=0tensorboard에 의해 어떤 히스토그램을 기록하지 않는 경우 설정 tf.summary.histogram, 그렇지 않으면 - histogram_freq0과 동일하지 않습니다!
Agile Bean

9

다음은 몇 가지 코드입니다.

K.set_learning_phase(1)
K.set_image_data_format('channels_last')

tb_callback = keras.callbacks.TensorBoard(
    log_dir=log_path,
    histogram_freq=2,
    write_graph=True
)
tb_callback.set_model(model)
callbacks = []
callbacks.append(tb_callback)

# Train net:
history = model.fit(
    [x_train],
    [y_train, y_train_c],
    batch_size=int(hype_space['batch_size']),
    epochs=EPOCHS,
    shuffle=True,
    verbose=1,
    callbacks=callbacks,
    validation_data=([x_test], [y_test, y_test_coarse])
).history

# Test net:
K.set_learning_phase(0)
score = model.evaluate([x_test], [y_test, y_test_coarse], verbose=0)

기본적 histogram_freq=2으로이 콜백을 호출 할 때 조정해야 할 가장 중요한 매개 변수는 디스크에서 더 적은 파일을 생성하는 것을 목표로 콜백을 호출 할 에포크 간격을 설정합니다.

다음은 "히스토그램"탭 아래 TensorBoard에서 본 훈련 전체의 마지막 컨볼 루션에 대한 값의 진화에 대한 시각화 예입니다.

텐서 보드 무게 모니터링

컨텍스트에서 전체 예제를 보려면 https://github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-100을 참조하십시오.


나는 이것의 상당 부분이 실제로 질문이고 질문에 대한 답변이 아니기 때문에 이것을 하향 투표했다. 답변의 일부 또는 전체 목적에 관계없이 답변에 새로운 질문을하지 마십시오.
Zoe

언급 한 내용을 제거하기 위해 질문을 편집했습니다. 실제로이 콜백은 내가 대답 할 당시의 설명서에서 제대로 사용하기가 매우 어렵습니다.
기 illa 슈발리에

"Keras의 TensorBoard 콜백을 어떻게 사용합니까?"라고 대답하기 위해 다른 모든 답변은 불완전하며 질문의 작은 맥락에만 응답합니다. 적어도 나는 잠재적 인 오류 나 대답에서 피해야 할 것들을 문서화했다. 아직 아무도 생각하지 않는 중요한 질문을 제기했다고 생각합니다. 나는 여전히 완전한 답변을 기다리고 있습니다. 이 콜백도 암과 같이 잘못 기록되어 있습니다.
기 illa 슈발리에

4

google-colab을 사용 하는 경우 그래프의 간단한 시각화는 다음과 같습니다.

import tensorboardcolab as tb

tbc = tb.TensorBoardColab()
tensorboard = tb.TensorBoardColabCallback(tbc)


history = model.fit(x_train,# Features
                    y_train, # Target vector
                    batch_size=batch_size, # Number of observations per batch
                    epochs=epochs, # Number of epochs
                    callbacks=[early_stopping, tensorboard], # Early stopping
                    verbose=1, # Print description after each epoch
                    validation_split=0.2, #used for validation set every each epoch
                    validation_data=(x_test, y_test)) # Test data-set to evaluate the model in the end of training

2

당신 log_dir='/Graph'./Graph대신 그 의미 를 썼 습니까? 지금 보냈습니다 /home/user/Graph.


1
직접 /Graph사용하지 않고 사용자의 홈 디렉토리에 폴더를 작성하는 이유는 무엇 /Graph입니까?
Michael Mior

2

Losswise ( https://losswise.com )를 확인해야합니다 .Tensorboard 보다 사용하기 쉽고 Keras 용 플러그인이 있으며 멋진 추가 기능이 있습니다. Losswise를 사용하면 사용 from losswise.libs import LosswiseKerasCallback하고 계속 사용할 callback = LosswiseKerasCallback(tag='my fancy convnet 1')수 있습니다 ( https://docs.losswise.com/#keras-plugin 참조 ).


7
면책 조항 : OP는 유료 제품 인 Losswise의 설립자입니다 (마이크로 프리 프리 티어가 있음에도 불구하고)
Michael Mior

@MichaelMior는 아직 유료 제품이 아니며 정확하지 않을 수도 있지만 (미래의
프리

2

몇 가지가 있습니다.

첫째는 /Graph아니지만./Graph

둘째, TensorBoard 콜백을 사용하면 유효성 검사 데이터가 없으면 시작되지 않기 때문에 항상 유효성 검사 데이터를 전달합니다.

셋째, 스칼라 요약 이외의 것을 사용하려면 작동하지 fit않기 때문에이 방법 만 사용해야합니다 fit_generator. 또는 콜백을 다시 작성하여 작업 할 수 있습니다 fit_generator.

콜백을 추가하려면 다음에 콜백을 추가하십시오. model.fit(..., callbacks=your_list_of_callbacks)



2

Tensorboard 콜백을 생성하십시오 :

from keras.callbacks import TensorBoard
from datetime import datetime
logDir = "./Graph/" + datetime.now().strftime("%Y%m%d-%H%M%S") + "/"
tb = TensorBoard(log_dir=logDir, histogram_freq=2, write_graph=True, write_images=True, write_grads=True)

Tensorboard 콜백을 적합한 호출로 전달하십시오.

history = model.fit(X_train, y_train, epochs=200, callbacks=[tb])

모델을 실행할 때 Keras 오류가 발생하면

"자리 표시 자 텐서에 값을 입력해야합니다"

다음을 수행하여 모델 작성 전에 Keras 세션을 재설정하십시오.

import keras.backend as K
K.clear_session()

문제가 해결되었습니다 You must feed a value for placeholder tensor. 왜 그런지 알아?
Ruthvik Vaila 19 :
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.