# 请在此处贴上你的核心代码。
# 请尽量只保留关键部分,不要无脑贴全部代码。
from __future__ import print_function
import os
import numpy as np
from bert4keras.backend import keras, K
from bert4keras.layers import Loss
from bert4keras.models import build_transformer_model
from bert4keras.tokenizers import Tokenizer, load_vocab
from bert4keras.optimizers import Adam
from bert4keras.snippets import sequence_padding, open
from bert4keras.snippets import DataGenerator, AutoRegressiveDecoder
from keras.models import Model
..
..
..
class CrossEntropy(Loss):
"""交叉熵作为loss,并mask掉输入部分
"""
def compute_loss(self, inputs, mask=None):
y_true, y_mask, y_pred = inputs
y_true = y_true[:, 1:] # 目标token_ids
y_mask = y_mask[:, 1:] # segment_ids,刚好指示了要预测的部分
y_pred = y_pred[:, :-1] # 预测序列,错开一位
loss = K.sparse_categorical_crossentropy(y_true, y_pred)
loss = K.sum(loss * y_mask) / K.sum(y_mask)
return loss
提问时请尽可能提供如下信息:
基本信息
################################################ ########from bert4keras.layers import Loss就报错了 ####### ################################################
核心代码
纯复用的你提供的seq2seq的例子。最奇怪的事情是,有些机器能跑起来。
输出信息
自我尝试
不管什么问题,请先尝试自行解决,“万般努力”之下仍然无法解决再来提问。此处请贴上你的努力过程。
说明:尝试了各种组合环境情况,还是这个错,不给我Import。
能是啥问题呢?郁闷