深度学习框架--学习之旅

解决loss nan问题

2018-10-17  本文已影响106人  布口袋_天晴了

数据集是一个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里暂时没有提供接口。

Regularization of Neural Networks using DropConnect

上一篇 下一篇

猜你喜欢

热点阅读