项目场景:
利用Transformers转ELECTRA模型的时候,遇到了一些问题。ELECTRA用的是讯飞哈工大的模型。
问题描述:
执行转换脚本:
python3 transformers-master/src/transformers/convert_electra_original_tf_checkpoint_to_pytorch.py \
--tf_checkpoint_path chinese_electra_base_L-12_H-768_A-12/ \
--config_file chinese_electra_base_L-12_H-768_A-12/base_discriminator_config.json \
--pytorch_dump_path electra_pytorch/model.bin \
--discriminator_or_generator discriminator
接着报错:
AttributeError: module 'tensorflow_core.keras.activations' has no attribute 'swish'
原因分析:
第一反应就是版本匹配的问题,但是我一步步根据官网要求来的,tf2.0,pytorch1.3.1,anaconda安装的,cuda,cudnn等都是匹配的。直接去查报错也查不出什么东西。
解决方案:
去github的issue上翻了翻,果然有兄弟和我遇到同样bug,解决方法也很简单。改用tf2.3版本。
注意点是tf2.3版本目前好像不能用anaconda安装,只能用pip安装,这时候一定要匹配好cudnn和cuda的版本。我这里是cuda=10.0;cudnn=7.6.5。
然后删除虚拟环境,重新安装,搞定。官方文档这个地方有点坑啊,里面写的是2.0结果要用2.3