数据集是一个2分类
输入数据集是数据对(上下文词向量矩阵,关系词向量)
上下文词向量矩阵用一个神经网络抽象出其高层特征向量表示vec1
关系词向量用一个简单的全连接层,处理成其高层特征向量表示vec2
最后计算score=cosine(vec1, vec2) ,大致步骤如下:
vec2 = tf.layers.dense(inputs=rel, units=10, activation=tf.nn.relu)
score =cosine_distance(vec1, vec2)
score = tf.nn.sigmoid(score)
loss=tf.nn.sigmoid_cross_entropy_with_logits(labels=self.labels, logits=score)
出现问题的原因是全连接层中的激活函数选择不当,可以将其改为activation=tf.nn.sigmoid。
其他解决方法:去除了处理关系词向量的全连接层,使模型变简单。或者给全连接层添加dropout。tf.nn.dropout()
还有一个基于dropout泛化的dropConnection,但是tensorflow里暂时没有提供接口。
网友评论