lil*_*ila 12 python sentence-similarity keras
我正在尝试使用STS数据集基于这项工作实现句子相似性架构.标签是从0到1的归一化相似度分数,因此假设它是回归模型.
我的问题是损失直接NaN从第一个时代开始.我究竟做错了什么?
我已经尝试更新到最新的keras和theano版本.
我的模型的代码是:
def create_lstm_nn(input_dim):
seq = Sequential()`
# embedd using pretrained 300d embedding
seq.add(Embedding(vocab_size, emb_dim, mask_zero=True, weights=[embedding_weights]))
# encode via LSTM
seq.add(LSTM(128))
seq.add(Dropout(0.3))
return seq
lstm_nn = create_lstm_nn(input_dim)
input_a = Input(shape=(input_dim,))
input_b = Input(shape=(input_dim,))
processed_a = lstm_nn(input_a)
processed_b = lstm_nn(input_b)
cos_distance = merge([processed_a, processed_b], mode='cos', dot_axes=1)
cos_distance = Reshape((1,))(cos_distance)
distance = Lambda(lambda x: 1-x)(cos_distance)
model = Model(input=[input_a, input_b], output=distance)
# train
rms = RMSprop()
model.compile(loss='mse', optimizer=rms)
model.fit([X1, X2], y, validation_split=0.3, batch_size=128, nb_epoch=20)
Run Code Online (Sandbox Code Playgroud)
我也尝试使用简单Lambda而不是Merge图层,但结果相同.
def cosine_distance(vests):
x, y = vests
x = K.l2_normalize(x, axis=-1)
y = K.l2_normalize(y, axis=-1)
return -K.mean(x * y, axis=-1, keepdims=True)
def cos_dist_output_shape(shapes):
shape1, shape2 = shapes
return (shape1[0],1)
distance = Lambda(cosine_distance, output_shape=cos_dist_output_shape)([processed_a, processed_b])
Run Code Online (Sandbox Code Playgroud)
nan 是深度学习回归中的一个常见问题。由于您使用的是暹罗网络,您可以尝试以下操作:
让深度学习完美发挥作用并不容易。
| 归档时间: |
|
| 查看次数: |
5300 次 |
| 最近记录: |