如何在神经网络中将句子嵌入作为特征输入?

经过预处理后,我得到了熊猫数据框,如所附的屏幕截图所示。

我想训练Keras神经网络模型,以将向量分类为意图

此处的向量是LASER Embeddings个句子,格式为numpy.ndarray。尝试将这些功能输入模型时,出现关于数据形状的错误。我认为我必须在实现模型之前使用Embedding Layer input_shape 或创建一个embedding matrix

由于我对Keras神经网络知识不多,所以很难理解我在这里必须做些什么。任何人都可以告诉我如何塑造这些数据并像here中那样训练Keras顺序模型。

print(df.shape) gives (2500,2)
print(df["vector"][0].shape) gives (1,1024)
print(df.head(2).to_dict()) 

给出以下内容

    {'intent': {0: '__label__all_barred_account',1: '__label__all_barred_account'},'vector': {0: array([[-0.00013465,0.0042192,-0.00137651,...,0.00062024,0.01850433,0.00674227]],dtype=float32),1: array([[ 7.9819439e-03,-2.2082901e-04,1.5223841e-05,1.5212121e-02,2.4543235e-03,2.8751865e-02]],dtype=float32)}}

我尝试了以下操作,错误为- ValueError:检查输入时出错:期望embedding_1_input具有形状(50,),但数组的形状为(1,)

df = pd.read_csv('../data/intents/sinhala_intents.csv',names=['data'])
df[['intent','sentence']] = df["data"].str.split(" ",1,expand=True)
df["sentence"] = df["sentence"].str.strip("-")
df["vector"] = df["sentence"].apply(lambda x: laser.embed_sentences(x,lang='si'))
df = df.drop(columns=['data','sentence'])

X = df["vector"].values
y = df['intent'].values

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.30)

embedding_dim = 50

model = Sequential()
model.add(layers.Embedding(input_dim=50,output_dim=embedding_dim,input_length=2500))
model.add(layers.GlobalMaxPool1D())
model.add(layers.Dense(10,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])
model.summary()

history = model.fit(X_train,epochs=20,verbose=False,validation_data=(X_test,y_test),batch_size=10)
loss,accuracy = model.evaluate(X_train,verbose=False)
print("Training accuracy: {:.4f}".format(accuracy))
loss,accuracy = model.evaluate(X_test,y_test,verbose=False)
print("Testing accuracy:  {:.4f}".format(accuracy))

如何在神经网络中将句子嵌入作为特征输入?

lucas0421 回答:如何在神经网络中将句子嵌入作为特征输入?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2805330.html

大家都在问