Python 在colab TypeError上使用TPU上的估计器进行BERT微调*=:';非类型';和';int';

Python 在colab TypeError上使用TPU上的估计器进行BERT微调*=:';非类型';和';int';,python,google-colaboratory,tensorflow-estimator,tpu,google-cloud-tpu,Python,Google Colaboratory,Tensorflow Estimator,Tpu,Google Cloud Tpu,我在谷歌的colab上写了一个jupyter笔记本,对一个版本进行了微调(用于文本分类),我已经只对阿拉伯语进行了预培训。训练开始时,我无法避免这个错误 我跟着谷歌给我的笔记本走 示范建筑规范: model\u fn=model\u fn\u builder( bert_config=modeling.BertConfig.from_json_文件(config_文件), num_labels=len(标签列表), 初始化检查点=初始化检查点, 学习率=学习率, num_train_steps=

我在谷歌的colab上写了一个jupyter笔记本,对一个版本进行了微调(用于文本分类),我已经只对阿拉伯语进行了预培训。训练开始时,我无法避免这个错误

我跟着谷歌给我的笔记本走

示范建筑规范:

model\u fn=model\u fn\u builder(
bert_config=modeling.BertConfig.from_json_文件(config_文件),
num_labels=len(标签列表),
初始化检查点=初始化检查点,
学习率=学习率,
num_train_steps=num_train_steps,
num_warmup_steps=num_warmup_steps,
使用_tpu=True,
使用\u one\u hot\u嵌入=True
)
tpu_cluster_resolver=tf.contrib.cluster_resolver.TPUClusterResolver(tpu_地址)
run_config=tf.contrib.tpu.RunConfig(
cluster=tpu\U cluster\U解析器,
model_dir=OUTPUT_dir,
保存检查点步骤=保存检查点步骤,
tpu_config=tf.contrib.tpu.TPUConfig(
每循环迭代次数=每循环迭代次数,
num_shards=num_TPU_核,
per_host_input_for_training=tf.contrib.tpu.InputPipelineConfig.per_host_V2))
估计器=tf.contrib.tpu.tpu估计器(
使用\u tpu=使用\u tpu,
型号\ fn=型号\ fn,
config=run\u config,
批量大小=批量大小,
评估批次大小=评估批次大小,
预测批次大小=预测批次大小,)
列车输入\u fn=输入\u fn\u生成器(
功能=列车功能,
序号长度=最大序号长度,
_training=True,
drop_余数=False)
#tf.reset_default_graph()
打印(f“开始培训!”)
当前时间=datetime.now()
估算器.训练(输入=训练输入,最大步数=训练步数)
打印(“培训耗时”,datetime.now()-当前时间)
错误代码:

/usr/local/lib/python3.6/dist-packages/tensorflow/python/tpu/tpu\u sharding.py in\u unshard\u shape(self,shape)
214(shape.as_list(),self._shard_维度))
215 dims=shape.as_list()
-->216 dims[自我碎片维度]*=自我碎片数量
217返回张量_形。as_形(dims)
218
TypeError:*=:“NoneType”和“int”的操作数类型不受支持

参数和其余代码都在这个共享的colab笔记本副本中:

为了社区的利益,在本节中提到了答案(尽管在评论部分有答案)

在函数中,
input\u fn\u builder
将参数
drop\u rements
设置为
True
,解决了该问题

相应的代码段如下所示:

train_input_fn = input_fn_builder(
    features=train_features,
    seq_length=MAX_SEQ_LENGTH,
    is_training=True,
    drop_remainder=False)

你找到解决这个问题的办法了吗。我面临着类似的问题,当使用TPU时,滴落剩余应等于真