Tensorflow Keras中的张力板回调不考虑初始拟合时间?

Tensorflow Keras中的张力板回调不考虑初始拟合时间?,tensorflow,keras,tensorboard,Tensorflow,Keras,Tensorboard,我试图在一张图形卡上并行训练多个模型。为了实现这一点,我需要从保存的重量恢复模型的训练,这不是一个问题。model.fit()方法甚至有一个参数initial\u epoch,让我告诉模型加载的模型在哪个epoch上。但是,当我将TensorBoard回调传递给fit()方法以监控模型的训练时,TensorBoard上的所有数据都显示为x=0 有没有办法克服这个问题并调整张力板上的历元 顺便说一下:我正在运行Keras2.0.6和Tensorflow 1.3.0。 self.callbacks

我试图在一张图形卡上并行训练多个模型。为了实现这一点,我需要从保存的重量恢复模型的训练,这不是一个问题。
model.fit()
方法甚至有一个参数initial\u epoch,让我告诉模型加载的模型在哪个epoch上。但是,当我将TensorBoard回调传递给
fit()
方法以监控模型的训练时,TensorBoard上的所有数据都显示为x=0

有没有办法克服这个问题并调整张力板上的历元

顺便说一下:我正在运行Keras2.0.6和Tensorflow 1.3.0。

self.callbacks=[TensorBoardCallback(log\u dir='./../logs/'+self.model\u name,直方图\u freq=0,write\u graph=True,write\u images=False,start\u epoch=self.step\u num]
self.model.fit(x=self.data['x_train'],y=self.data['y_train'],batch_size=self.input参数[-1]['batch_size'],epochs=1,validation_data=(self.data['x_test'],self.data['y_test'],verbose=verbose=verbose,callbacks=self.callbacks,shuffle=self.hy.superparameters['shuffle_data'],initial_历元=self.step_num)
self.model.save_权重(“./weights/%s.hdf5%”(self.model_名称))
self.model.load_权重(“./weights/%s.hdf5”“(self.model_名称))
self.model.fit(x=self.data['x_train'],y=self.data['y_train'],batch_size=self.input参数[-1]['batch_size'],epochs=1,validation_data=(self.data['x_test'],self.data['y_test'],verbose=verbose=verbose,callbacks=self.callbacks,shuffle=self.hy.superparameters['shuffle_data'],initial_历元=self.step_num)
self.model.save_权重(“./weights/%s.hdf5%”(self.model_名称))
Tensorboard上的结果图看起来像这样,这不是我所希望的:

更新:

epochs=10
传递到第一个
model.fit()时,10个历元的结果显示在TensorBoard中(见图)

但是,当重新加载模型并运行它时(附加了相同的回调),回调的
on\u epoch\u end
方法永远不会被调用


结果是,当我将剧集数传递给model.fit()以告诉它训练多长时间时,它必须是指定的初始时间的数字。因此,如果我想训练10集,那么如果初始epoch=self.step\num,那么epochs=self.step\num+10。

你在运行哪种版本的keras?我看到的是,Tensorboard回调不是
start\u epoch
参数(相反,调用程序将其传递给
Tensorboard\on\u epoch\u end
。我运行的是Keras 2.0.6,但正如文章中提到的,初始的\u epoch参数不是传递给回调,而是传递给model.fit()keras的方法。我知道
initial\u epoch
是fit的参数,但代码段的第一行是
self.callbacks=[TensorBoardCallback(…start\u epoch=self.step\u num)]
,这很奇怪。关于这个并行训练的另一个问题是:这些模型有不同的名称吗?日志中有多个目录吗?
?哦,是的,你说得对。对不起。我试着用TensorBoard回调本身玩了一会儿,并试着在on_epoch_end()中替换epoch使用我的历元编号。虽然当我训练一个重新加载的模型时,该方法似乎没有被调用。我不是有意将其留在代码中。对不起。是的,每个模型都有一个不同的名称,所有模型都显示在张力板图上,但只显示历元0。别担心。回到问题上来:我认为模型正在被重新创建(因此,重命名)在恢复之前。如果要将它们重新显示为图形中的同一条线,它们必须具有相同的名称=>包含在同一子文件夹中。但是,从图形中看,您似乎没有为哪怕是一个历元训练过任何模型。尝试为多个历元训练它们,并检查一条线(而不仅仅是一个点)是否出现在图形中;将
平滑
拖动到0,并在“水平轴”处选中
步骤
,而不是
相对
。然后将新图形上载到您的问题中。“请注意,与
初始纪元
一起,
纪元
将被理解为“最终纪元”“.模型不会针对历代给出的多次迭代进行训练,而只是在达到索引历代的历代之前。”-因此,使用
epochs=step+epochs
initial_epoch=step*epochs