bert4keras icon indicating copy to clipboard operation
bert4keras copied to clipboard

save_weights_as_checkpoint 在tf2.0下会报错

Open AnddyWang opened this issue 3 years ago • 4 comments

提问时请尽可能提供如下信息:

基本信息

  • 你使用的操作系统:
  • 你使用的Python版本: python3.6
  • 你使用的Tensorflow版本: tf2.2.0
  • 你使用的Keras版本: 2.3.1
  • 你使用的bert4keras版本:0.8.4
  • 你使用纯keras还是tf.keras:keras
  • 你加载的预训练模型:bert

核心代码

# 请在此处贴上你的核心代码。
# 请尽量只保留关键部分,不要无脑贴全部代码。

输出信息

bert.save_weights_as_checkpoint(os.path.join(output_model_dir, "bert.ckpt"))
  File "/usr/local/lib/python3.6/dist-packages/bert4keras/models.py", line 246, in save_weights_as_checkpoint
    values = K.batch_get_value(layer.trainable_weights)
  File "/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py", line 2939, in batch_get_value
    return tf_keras_backend.batch_get_value(ops)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py", line 3331, in batch_get_value
    return get_session(tensors).run(tensors)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", line 958, in run
    run_metadata_ptr)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", line 1106, in _run
    raise RuntimeError('The Session graph is empty.  Add operations to the '
RuntimeError: The Session graph is empty.  Add operations to the graph before calling run().

自我尝试

不管什么问题,请先尝试自行解决,“万般努力”之下仍然无法解决再来提问。此处请贴上你的努力过程。

AnddyWang avatar Aug 20 '20 07:08 AnddyWang

2.x我也不熟悉了~这个save_weights_as_checkpoint一般是预训练完之后转格式用,预训练只推荐用1.14或者1.15。

bojone avatar Aug 22 '20 02:08 bojone

@bojone 想着finetune一版bert模型A,然后接着再在A上继续finetune(需要用ckpt格式),这种有其他方法么

AnddyWang avatar Aug 22 '20 04:08 AnddyWang

@bojone 想着finetune一版bert模型A,然后接着再在A上继续finetune(需要用ckpt格式),这种有其他方法么

你用load_weights加载A的权重,不一定要用build_transformer_model

bojone avatar Nov 09 '20 02:11 bojone

同遇到这个问题,我这边儿是需要将继续预训练得到的bert模型分享给其他人用,需要bert.save_weights_as_checkpoint保存为通用化的checkpoint,这样其他人就可以使用或者转换为pytorch版本了,但是最新的2.x的tf遇到了这个问题

JackKuo666 avatar May 18 '22 11:05 JackKuo666