Keras ValueError:没有要保存的变量

时间:2019-11-09 11:03:27

标签: python tensorflow machine-learning keras

我制作了Keras模型,但错误消息:“ ValueError:没有要保存的变量”不断出现,我不知道它的含义以及引起问题的原因。

我试图改变存储Keras模型的方式,但这似乎不是问题所在……

下面的代码是构建Keras模型的一部分。

tensorboard_callback = TensorBoard(log_dir = log_path, write_graph = True, embeddings_freq = 'batch')
es_min_valLoss = EarlyStopping(monitor = 'val_loss', patience = 15, mode = 'min')

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
train_history=model.fit(x = trainData, y = trainLabels, validation_split = validation_split, 
                        epochs = epochs, batch_size = batch_size, verbose = 2, 
                        callbacks=[tensorboard_callback, es_min_valLoss])

错误消息如下:

Traceback (most recent call last):

  File "<ipython-input-27-9694f30344b3>", line 9, in <module>
    callbacks=[tensorboard_callback, es_min_valLoss])

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\models.py", line 1002, in fit
    validation_steps=validation_steps)

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\engine\training.py", line 1705, in fit
    validation_steps=validation_steps)

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\engine\training.py", line 1155, in _fit_loop
    callbacks.set_model(callback_model)

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\callbacks.py", line 52, in set_model
    callback.set_model(model)

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\callbacks.py", line 802, in set_model
    self.saver = tf.train.Saver(list(embeddings.values()))

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\training\saver.py", line 832, in __init__
    self.build()

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\training\saver.py", line 844, in build
    self._build(self._filename, build_save=True, build_restore=True)

  File "D:\Anaconda3\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\training\saver.py", line 869, in _build
    raise ValueError("No variables to save")

ValueError: No variables to save

1 个答案:

答案 0 :(得分:1)

您的嵌入数据是什么?您必须将embeddings_data传递给TensorBoard回调。如果您不使用嵌入,请删除参数embeddings_freq

Keras文档很棒,您可以阅读有关TensorBoard回调here

的更多信息。