def _generate_model(self, lembedding, num_classes=2, unit='gru', rnn_size=128, train_vectors=True):
model = Sequential()
if lembedding.vector_box.W is None:
emb = Embedding(lembedding.vector_box.size,
lembedding.vector_box.vector_dim,
W_constraint=None)
else:
emb = Embedding(lembedding.vector_box.size,
lembedding.vector_box.vector_dim,
weights=[lembedding.vector_box.W], W_constraint=None)
emb.trainable = train_vectors
model.add(emb)
if unit == 'gru':
model.add(GRU(rnn_size))
else:
model.add(LSTM(rnn_size))
model.add(Dropout(0.2))
if num_classes == 2:
model.add(Dense(1, activation='sigmoid'))
if self.optimizer is None:
self.optimizer = 'rmsprop'
model.compile(loss='binary_crossentropy', optimizer=self.optimizer, metrics=["accuracy"])
else:
if self.optimizer is None:
self.optimizer = 'adam'
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=self.optimizer, metrics=["accuracy"])
return model
评论列表
文章目录