Я читаю книгу Deep Learning with Python, в которой используется Keras. В главе 7 показано, как использовать TensorBoard для мониторинга прогресса фазы обучения, на примере:
import keras
from keras import layers
from keras.datasets import imdb
from keras.preprocessing import sequence
max_features = 2000
max_len = 500
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
x_train = sequence.pad_sequences(x_train, maxlen=max_len)
x_test = sequence.pad_sequences(x_test, maxlen=max_len)
model = keras.models.Sequential()
model.add(layers.Embedding(max_features, 128, input_length=max_len, name='embed'))
model.add(layers.Conv1D(32, 7, activation='relu'))
model.add(layers.MaxPooling1D(5))
model.add(layers.Conv1D(32, 7, activation='relu'))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(1))
model.summary()
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
callbacks = [
keras.callbacks.TensorBoard(
log_dir='my_log_dir',
histogram_freq=1,
embeddings_freq=1,
)
]
history = model.fit(x_train, y_train, epochs=20, batch_size=128, validation_split=0.2, callbacks=callbacks)
По-видимому, библиотека Keras претерпела некоторые изменения, поскольку этот код вызывает некоторое исключение:
ValueError: To visualize embeddings, embeddings_data must be provided.
Это происходит после первой эпохи и при первом запуске обратных вызовов (при первом запуске TensorBoard). Я знаю, что отсутствует параметр TensorBoard embeddings_data
. Но я не знаю, что мне назначить на это.
У кого-нибудь есть рабочий пример для этого?
Вот версии, которые я использую:
Python: 3.6.5
Keras: 2.2.0
Tensorflow: 1.9.0
[ОБНОВИТЬ]
Чтобы проверить любое возможное решение, я проверил это:
import numpy as np
callbacks = [
keras.callbacks.TensorBoard(
log_dir='my_log_dir',
histogram_freq = 1,
embeddings_freq = 1,
embeddings_data = np.arange(0, max_len).reshape((1, max_len)),
)
]
history = model.fit(x_train, y_train, epochs=20, batch_size=128, validation_split=0.2, callbacks=callbacks)
Это единственный способ заполнить embeddings_data
который не приведет к ошибке. Но хотя это тоже не помогает. Тем не менее вкладка PROJECTOR
TensorBoard пуста:
Любая помощь приветствуется.