我有一个供体选择的数据集,并使用此数据集实现了一个模型,模型的体系结构显示在图像https://i.imgur.com/w395Yk9.png中,数据集图像看起来像https://imgur.com/kdsCY58 我们可以将项目批准作为标签。我的主要问题是如何在此处合并多个嵌入层,以及如何通过将所有数据堆叠在一起来训练模型。下面是我只在文章列上尝试过的代码,但是我需要添加其他列的嵌入层。此外,我还需要在转换后将所有列堆叠起来,但是有2d列表无法转换为矩阵。
this is the code to convert data into list of word ranks.
'''
def convert_data(x):
vector = CountVectorizer()
vector.fit(x)
vocab = vector.get_feature_names()
print('No. of words in the Vocabulary : ',len(vocab))
corpus = dict()
freq_word = []
index = 0
for s in x:
for w in s.split():
corpus.setdefault(w,[]).append(index)
index += 1
for w in vocab:
freq_word.append(len(corpus[w]))
sort_index =np.argsort(np.array(freq_word))[::-1]
word_dict=dict()
rank=1
for i in sort_index:
word_dict[vocab[i]]=rank
rank +=1
updated_data=[]
#print(word_dict)
for sentence in x:
rank_list=[]
for words in sentence.split():
if(len(words)>=2):
rank_list.append(word_dict[words])
updated_data.append(rank_list)
return(updated_data)
''' 这是模型架构 '''
m1 = Sequential()
m1.add(Embedding(51, embd_vec_len, input_length=max_essay_length))
m1.add(LSTM(10))
m1.add(Dense(100, activation='relu'))
m1.add(Dropout(0.))
m1.add(Dense(50, activation='relu'))
m1.add(Dropout(0.2))
m1.add(Dense(1, activation='sigmoid'))
print(m1.summary())
import keras.backend as k
from keras.optimizers import SGD
from sklearn.utils import class_weight
from keras import optimizers
class_weights = class_weight.compute_class_weight('balanced',
np.unique(y_tr),
y_tr)
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
m1.compile(loss='binary_crossentropy',
optimizer=sgd,
metrics=['accuracy']
)
# Fitting the data to the model
history_1 = m1.fit(essay_train, y_tr, nb_epoch=2,batch_size=5000,
class_weight=class_weights ,verbose=1,validation_data=(essay_test, y_test)
)
'''
答案 0 :(得分:0)
我在StackOverflow上发现了这个old post。 它指出,当您需要多个嵌入层时,应使用Keras功能API。 该帖子还引用了此kaggle script,希望它有用。