Ниже приведен рабочий пример, который, я думаю, делает то, что вы хотите. Я использую Process
из многопроцессорного модуля . Обратите внимание, что представляется важным, чтобы модель определялась внутри функции, которую вы задали как target
для Process
при вызове функции fit
, как указано в в этом посте . Я попытался определить модель вне вызова функции, и она инициализировала бы модель, но затем обучение просто зависало на неопределенное время.
Когда я запускаю это на своем ноутбуке, тензорная доска требует немного времени для начала, но обычнок тому времени, когда тренировочные хиты начнутся, тенорборд эпохи 70 запустится и будет работать до тех пор, пока вы не убьете его Ctrl + C.
import os
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from multiprocessing import Process
def startTensorboard(logdir):
# Start tensorboard with system call
os.system("tensorboard --logdir {}".format(logdir))
def fitModel():
# Create your model
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
# Some mock training data
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))
# Run the fit function
model.fit(data, labels, epochs=100, batch_size=32)
if __name__ == '__main__':
# Run both processes simultaneously
Process(target=startTensorboard, args=("logs",)).start()
Process(target=fitModel).start()