无法从微调的 GPT-2 模型转换为 Tensorflow Lite 模型

问题描述

我使用我自己的文本使用 run_language_modeling.py 微调了一个 distilgpt2 模型,并且在训练和 run_generation.py 脚本产生预期结果后它工作正常。

现在我想将其转换为 Tensorflow Lite 模型,并使用以下方法实现

from transformers import *

CHECKPOINT_PATH = '/content/drive/My Drive/gpt2_finetuned_models/checkpoint-2500'

model = GPT2LMHeadModel.from_pretrained("distilgpt2")
model.save_pretrained(CHECKPOINT_PATH)
model = TFGPT2LMHeadModel.from_pretrained(CHECKPOINT_PATH,from_pt=True) 

但我不认为我在转换后这样做是正确的,当我写

print(model.inputs)
print(model.outputs)

我明白

None
None

但我仍然使用以下方法进行 TFLite 转换:

import tensorflow as tf

input_spec = tf.TensorSpec([1,64],tf.int32)
model._set_inputs(input_spec,training=False)

converter = tf.lite.TFLiteConverter.from_keras_model(model)

# FP16 quantization:
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.float16]

tflite_model = converter.convert()

open("/content/gpt2-fp16.tflite","wb").write(tflite_model)

但不起作用,当使用生成tflite 模型时出现错误

tensorflow/lite/kernels/kernel_util.cc:249 d1 == d2 || d1 == 1 || d2 == 1 不是真的。

我确定这与我的模型无法正确转换并获取 None 用于输入/输出有关。

有人知道如何解决这个问题吗?

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)