bert4keras
bert4keras copied to clipboard
save_weights_as_checkpoint 在tf2.0下会报错
提问时请尽可能提供如下信息:
基本信息
- 你使用的操作系统:
- 你使用的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().
自我尝试
不管什么问题,请先尝试自行解决,“万般努力”之下仍然无法解决再来提问。此处请贴上你的努力过程。
2.x我也不熟悉了~这个save_weights_as_checkpoint
一般是预训练完之后转格式用,预训练只推荐用1.14或者1.15。
@bojone 想着finetune一版bert模型A,然后接着再在A上继续finetune(需要用ckpt格式),这种有其他方法么
@bojone 想着finetune一版bert模型A,然后接着再在A上继续finetune(需要用ckpt格式),这种有其他方法么
你用load_weights
加载A的权重,不一定要用build_transformer_model
。
同遇到这个问题,我这边儿是需要将继续预训练得到的bert模型分享给其他人用,需要bert.save_weights_as_checkpoint保存为通用化的checkpoint,这样其他人就可以使用或者转换为pytorch版本了,但是最新的2.x的tf遇到了这个问题