如果我有带有嵌入式 Python 函数的 C++ 代码,即它使用 Python 的 C API 来调用 Python 的解释器,我怎样才能让 Python 异常冒泡到 C++ 级别?
注意:这不是相反的问题(关于将 C++ 扩展异常传播到 Python 解释器)。
我使用 Keras 并尝试将两个不同的层连接成一个向量(向量的第一个值是第一层的值,另一部分是第二层的值)。其中一层是密集层,另一层是嵌入层。
我知道如何合并两个嵌入层或两个密集层,但我不知道如何合并一个嵌入层和一个密集层(维度问题)。
一个简单的例子是这样的:
L_branch = Sequential()
L_branch.add(Dense(10, input_shape = (4,) , activation = 'relu'))
L_branch.add(BatchNormalization())
R_branch = Sequential()
R_branch.add(Embedding(1000, 64, input_length=5))
final_branch.add(Merge([L_branch, R_branch], mode = 'concat'))
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为您无法合并具有不同维度的图层。
PS:对不起,英语不是我的母语,我希望你能理解我的问题。
此致。
使用预训练嵌入,我们可以将它们指定为 keras 嵌入层中的权重。要使用多个嵌入,指定多个嵌入层是否合适?IE
embedding_layer1 = Embedding(len(word_index) + 1,
EMBEDDING_DIM,
weights=[embedding_matrix_1],
input_length=MAX_SEQUENCE_LENGTH,
trainable=False)
embedding_layer2 = Embedding(len(word_index) + 1,
EMBEDDING_DIM,
weights=[embedding_matrix_2],
input_length=MAX_SEQUENCE_LENGTH,
trainable=False)
model.add(embedding_layer1)
model.add(embedding_layer2)
Run Code Online (Sandbox Code Playgroud)
这建议将它们总结起来并将它们表示为一个层,这不是我所追求的。
我正在尝试了解如何在 Keras 中创建具有多个嵌入层和其他输入的模型。这是我的模型的结构方式(E=嵌入层,[....]=输入层):
E E [V V V]
\ | /
\ | /
Dense
|
Dense
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的代码:
model_a = Sequential()
model_a.add(Embedding(...))
model_b = Sequential()
model_b.add(Embedding(...))
model_c = Sequential()
model_c.add(Embedding(...))
model_values = Sequential()
model_values.add(Input(...))
classification_model = Sequential()
classification_layers = [
Concatenate([model_a,model_b,model_c, model_values]),
Dense(...),
Dense(...),
Dense(2, activation='softmax')
]
for layer in classification_layers:
classification_model.add(layer)
classification_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
classification_model.fit(train_data,one_hot_labels, epochs=1, validation_split=0.2)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
ValueError: A `Concatenate` layer should be called on a list of at least 2 inputs
Run Code Online (Sandbox Code Playgroud)
我不知道我在这里做错了什么。这是错误日志的更多细节:
---------------------------------------------------------------------------
ValueError Traceback (most recent …Run Code Online (Sandbox Code Playgroud) 我正在 Keras 中训练 LSTM:
iclf = Sequential()
iclf.add(Bidirectional(LSTM(units=10, return_sequences=True, recurrent_dropout=0.3), input_shape=(None,2048)))
iclf.add(TimeDistributed(Dense(1, activation='sigmoid')))
Run Code Online (Sandbox Code Playgroud)
每个单元格的输入是一个 2048 向量,它是已知的,不需要学习(如果你愿意,它们是输入句子中单词的 ELMo 嵌入)。因此,这里我没有Embedding层。
由于输入序列具有可变长度,因此使用pad_sequences以下方法填充它们:
X = pad_sequences(sequences=X, padding='post', truncating='post', value=0.0, dtype='float32')
Run Code Online (Sandbox Code Playgroud)
现在,我想告诉 LSTM 忽略这些填充元素。官方的方法是使用 Embedding 层与mask_zero=True. 但是,这里没有嵌入层。如何通知 LSTM 屏蔽零元素?
我想使用预训练的 GloVe 嵌入作为 RNN 编码器/解码器中嵌入层的初始权重。代码在 Tensorflow 2.0 中。简单地将嵌入矩阵作为 weights = [embedding_matrix] 参数添加到 tf.keras.layers.Embedding 层不会这样做,因为编码器是一个对象,我现在不确定在训练时间。
我的代码严格遵循Tensorflow 2.0 文档中的神经机器翻译示例。在此示例中,我将如何向编码器添加预先训练的嵌入矩阵?编码器是一个对象。当我开始训练时,GloVe 嵌入矩阵对 Tensorflow 图不可用。我收到错误消息:
运行时错误:无法在 Tensorflow 图形函数中获取值。
代码在训练过程中使用了 GradientTape 方法和教师强制。
我尝试修改编码器对象以在各个点包含 embedding_matrix,包括在编码器的init、 call 和 initialize_hidden_state 中。所有这些都失败了。stackoverflow 和其他地方的其他问题是针对 Keras 或更旧版本的 Tensorflow,而不是 Tensorflow 2.0。
class Encoder(tf.keras.Model):
def __init__(self, vocab_size, embedding_dim, enc_units, batch_sz):
super(Encoder, self).__init__()
self.batch_sz = batch_sz
self.enc_units = enc_units
self.embedding = tf.keras.layers.Embedding(vocab_size, embedding_dim, weights=[embedding_matrix])
self.gru = tf.keras.layers.GRU(self.enc_units,
return_sequences=True,
return_state=True,
recurrent_initializer='glorot_uniform')
def call(self, x, hidden):
x = self.embedding(x)
output, state …Run Code Online (Sandbox Code Playgroud) 我想执行句子相似度任务并尝试了以下操作:
from transformers import XLNetTokenizer, XLNetModel
import torch
import scipy
import torch.nn as nn
import torch.nn.functional as F
tokenizer = XLNetTokenizer.from_pretrained('xlnet-large-cased')
model = XLNetModel.from_pretrained('xlnet-large-cased')
input_ids = torch.tensor(tokenizer.encode("Hello, my animal is cute", add_special_tokens=False)).unsqueeze(0)
outputs = model(input_ids)
last_hidden_states = outputs[0]
input_ids = torch.tensor(tokenizer.encode("I like your cat", add_special_tokens=False)).unsqueeze(0)
outputs1 = model(input_ids)
last_hidden_states1 = outputs1[0]
cos = nn.CosineSimilarity(dim=1, eps=1e-6)
output = cos(last_hidden_states, last_hidden_states1)
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
RuntimeError: The size of tensor a (7) must match the size of tensor b (4) at non-singleton dimension 1
Run Code Online (Sandbox Code Playgroud)
谁能告诉我,我做错了什么?有更好的方法吗?
我正在尝试将聚类应用于数据集。在此之前,我必须将图划分为 n 个簇,但我不知道该怎么做。
Fasttext 可以轻松处理 OOV,即可以假设emb = fasttext_model(raw_input)始终成立。但是,我不确定如何将这一层构建到tf.keras嵌入中。我无法简单地将矩阵加载到其中,Embedding因为这样就无法处理 OOV。是否有我可以fasttext_model在tf.keras模型中使用的解决方法?
我正在尝试一个新的用户界面,其中典型的个人资料设置是通过聊天而不是用户界面来更新的。例如,用户可以直接与机器人聊天,而不是显示前端组件来让用户取消计费。
我想知道是否有可能让我的 LLM(比如说 gpt3)生成运行这些操作所需的 graphql 查询。我想我可以将我的 graphql 模式提取到像 Pinecone 这样的矢量数据库中,然后将该上下文输入到 LLM 中,以便它可以生成适当的 GQL 查询/突变。
这是可行的还是坏主意?
到目前为止我只对此进行了理论分析