在我的 tensorflow CNN 的第一轮步骤中,损失变成了 NAN
Loss turns to be NAN at the first round step in my tensorflow CNN
在我的 tensorflow CNN 的第一轮步骤中损失变成了 NAN。
1.网络 :
3个隐藏层(2个卷积层+1个隐藏全连接层)+读出层。
2。 3个隐藏层 :
a) 权重 :
W = tf.Variable(tf.truncated_normal(wt,stddev=0.1,name='wights' ))
b) 偏差 :
b = tf.Variable( tf.fill([W.get_shape().as_list()[-1] ],0.9),name = 'biases' )
c) 激活:
ReLu
d) 辍学:
0.6
**即使 dropout 为 0.0,loss 也变为 nan
3。读出图层:
softmax
4:损失函数:
tf.reduce_mean(-tf.reduce_sum(_lables * tf.log(_logist), reduction_indices=[1]))
5.optimizer:
tf.train.AdamOptimizer
learning_rate = 0.0005
**即使 learning_rate = 0
损失也会变成 nan
由于我们没有完整的源代码,所以很难看出问题所在。但是,您可以尝试在成本函数中使用 'tf.nn.softmax_cross_entropy_with_logits'。例如:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(predictions, labels))
使用 'tf.nn.softmax_cross_entropy_with_logits' 找到完整的代码示例
到目前为止,我遇到了两个 nan
可能导致结果的案例:
- 数字太大(也许您正在对一个数字执行
square
,结果太大)
- 或者存在无效输入(某些函数如
sqrt
和 log
不接受负输入,因此它们会 return nan
)
在我的 tensorflow CNN 的第一轮步骤中损失变成了 NAN。
1.网络 :
3个隐藏层(2个卷积层+1个隐藏全连接层)+读出层。
2。 3个隐藏层 :
a) 权重 :
W = tf.Variable(tf.truncated_normal(wt,stddev=0.1,name='wights' ))
b) 偏差 :
b = tf.Variable( tf.fill([W.get_shape().as_list()[-1] ],0.9),name = 'biases' )
c) 激活:
ReLu
d) 辍学:
0.6
**即使 dropout 为 0.0,loss 也变为 nan
3。读出图层:
softmax
4:损失函数:
tf.reduce_mean(-tf.reduce_sum(_lables * tf.log(_logist), reduction_indices=[1]))
5.optimizer:
tf.train.AdamOptimizer
learning_rate = 0.0005
**即使 learning_rate = 0
由于我们没有完整的源代码,所以很难看出问题所在。但是,您可以尝试在成本函数中使用 'tf.nn.softmax_cross_entropy_with_logits'。例如:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(predictions, labels))
使用 'tf.nn.softmax_cross_entropy_with_logits' 找到完整的代码示例
到目前为止,我遇到了两个 nan
可能导致结果的案例:
- 数字太大(也许您正在对一个数字执行
square
,结果太大) - 或者存在无效输入(某些函数如
sqrt
和log
不接受负输入,因此它们会 returnnan
)