首页 > 解决方案 > Pytorch 嵌入层中的 BERT 嵌入

问题描述

我正在使用词嵌入。我使用“BERT”获得了词嵌入。

我有这样的数据

1992 regular unleaded 172 6 MANUAL all wheel drive 4 Luxury Midsize Sedan 21 16 3105 200

并作为标签:

df['Make'] = df['Make'].replace(['Chrysler'],1)

我尝试将嵌入作为 LSTM 输入。

对 BERT 使用以下代码:

 tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')                                                     
 bert_model = BertModel.from_pretrained('bert-base-uncased')

用于标记此代码:

def tokenize_text(df, max_seq):
    return [ 
        tokenizer.encode(text, add_special_tokens=True)[:max_seq] for text in df
    ]


def pad_text(tokenized_text, max_seq):
    return np.array([el + [0] * (max_seq - len(el)) for el in tokenized_text])


def tokenize_and_pad_text(df, max_seq):
    tokenized_text = tokenize_text(df, max_seq)
    padded_text = pad_text(tokenized_text, max_seq)
    return padded_text

和 :

train_indices = tokenize_and_pad_text(df_train, max_seq)

对于 BERT 嵌入矩阵:

def get_bert_embed_matrix():
    bert = transformers.BertModel.from_pretrained('bert-base-uncased')
    bert_embeddings = list(bert.children())[0]
    bert_word_embeddings = list(bert_embeddings.children())[0]
    mat = bert_word_embeddings.weight.data.numpy()
    return mat

embedding_matrix = get_bert_embed_matrix()

和 LSTM 模型:

embedding_layer =Embedding(embedding_matrix.shape[0], embedding_matrix.shape[1], weights=[embedding_matrix], input_length=max_seq_len, trainable=True)
model = Sequential()
model.add(embedding_layer)
model.add(LSTM(128, dropout=0.3, recurrent_dropout=0.3))
model.add(Dense(1, activation='softmax'))

model.compile(
    optimizer=tf.keras.optimizers.Adam(1e-5),
    loss="categorical_crossentropy",
    metrics=["accuracy"],
)

model.summary()

对于模型适合此代码:

model.fit(train_indices, y_train, epochs=20, verbose=1)

我给出这样的输出:

Epoch 1/20
1/1 [==============================] - 3s 3s/step - loss: 0.0000e+00 - accuracy: 0.3704
Epoch 20/20
1/1 [==============================] - 0s 484ms/step - loss: 0.0000e+00 - accuracy: 0.3704

我不知道我错过了什么。

首先,我们能做些什么呢?
其次,我们如何实现 Pytorch 模型?

非常感谢。

标签: pytorchkeras-layerbert-language-modelhuggingface-transformers

解决方案


推荐阅读