bert4keras
bert4keras copied to clipboard
关系抽取样例task_relation_extraction预测出错 tf版本2.1
提问时请尽可能提供如下信息: bojone您好,我根据您的代码写了预测的函数,训练过程没有问题是在1.14的环境下,预测是在2.1的环境下
基本信息
- 你使用的操作系统: win10
- 你使用的Python版本: 3.6
- 你使用的Tensorflow版本: 2.1
- 你使用的Keras版本: 2.3
- 你使用的bert4keras版本: 0.7.3
- 你使用纯keras还是tf.keras: keras
- 你加载的预训练模型:albert
核心代码
def predict(test_path):
test_text = []
with open(test_path, encoding='utf-8') as textf:
for text in textf:
test_text.append(text)
f = open('test_pred.json', 'w', encoding='utf-8')
pbar = tqdm()
for i, t in enumerate(test_text):
R = set([SPO(spo) for spo in extract_spoes(t)])
pbar.update()
pbar.set_description('第%d个预测' % (i))
s = json.dumps({'text': t, 'spo_list_pred': list(R)}, ensure_ascii=False, indent=4)
f.write(s + '\n')
pbar.close()
f.close()
train_model.load_weights('best_model.weights')
predict(text_path)
输出信息
我查看了object预测的模型输入,发现是没有问题的,报错的路径
call, session.py:1474
call, backend.py:3567
predict_loop, training_arrays.py:324
predict, training.py:1462
extract_spoes, task_relation_extraction.py:283
predict, task_relation_extraction.py:362
tensorflow.python.framework.errors_impl.InvalidArgumentError: Matrix size-incompatible: In[0]: [1,2], In[1]: [624,312]
[[{{node layer_normalization_1/dense_8/MatMul}}]]
自我尝试
bojone您好,因为训练过程是可以正常输出验证结果,所以我尝试了换了1.14版本的tf就不报错了,挺想知道这个错误的原因。
使用1.14的時候我也依樣沒問題 但使用新版的tf 2.2 evaluate的時候precision 會一直都是1 recall是0 loss 會降不下來
使用1.14的時候我也依樣沒問題 但使用新版的tf 2.2 evaluate的時候precision 會一直都是1 recall是0 loss 會降不下來
那就不用2.2
训练集数据量10w结果是是正常的,1w就会出现问题。我是 tf1.14.0,训练的时候 loss 是下降的,但是验证和测试的结果全是空,导致 precision一直为1,recall一直为0,请问这是什么情况呢?数据量少的情况下训练多少都是空,无法过拟合训练集的数据
训练集数据量10w结果是是正常的,1w就会出现问题。我是 tf1.14.0,训练的时候 loss 是下降的,但是验证和测试的结果全是空,导致 precision一直为1,recall一直为0,请问这是什么情况呢?数据量少的情况下训练多少都是空,无法过拟合训练集的数据
这个问题我也遇到过,我理解的是跟模型有关系,因为主体的选择具有随机性,会有比较大的负样本量,再加上模型本身的稀疏性,在数据量比较少的情况下,导致模型无法做出预测
训练集数据量10w结果是是正常的,1w就会出现问题。我是 tf1.14.0,训练的时候 loss 是下降的,但是验证和测试的结果全是空,导致 precision一直为1,recall一直为0,请问这是什么情况呢?数据量少的情况下训练多少都是空,无法过拟合训练集的数据
这个问题我也遇到过,我理解的是跟模型有关系,因为主体的选择具有随机性,会有比较大的负样本量,再加上模型本身的稀疏性,在数据量比较少的情况下,导致模型无法做出预测
训练步数上去之后也是有结果的,需要训练足够多的步数,少量数据也能训练和预测,只不过这个学习率是非常低(去掉ema的话就会大很多),少量数据训练几千个epoch也是不会过拟合的。
@TPF2017 大佬你好,您是怎么吧苏神代码里的EMA权重去掉的?我尝试了几次,但是因为自己设备的原因,每次要第二或者第三天才能拿到报错信息,能分享一下您是怎么去掉的吗