我试图用UCF101单帧数据训练CNN。
据我所知,问题是重量初始化或
使用\n
或成本和优化程序函数的损失。
还有什么办法可以使用xavier初始化吗?
\t
tf.nn.softmax and tf.nn.softmax_cross_entropy_with_logits
答案 0 :(得分:1)
您可以通过为变量的初始值创建numpy数组来使用不同的初始化方案。
您的损失根本没有变化,因此调试的一种方法是确认变量实际上在更新时发生变化。
答案 1 :(得分:1)
来自Tensorflow documentation!
警告:此操作需要未缩放的日志,因为它会在内部执行logmax以提高效率。不要使用softmax的输出调用此op,因为它会产生不正确的结果。
考虑到这一点,你应该拿出
out = tf.nn.softmax(tf.matmul(dense2, _weights['out']) + _biases['out'])
从您的网络定义中替换为
out = tf.matmul(dense2, _weights['out']) + _biases['out']
由于您没有进行微调,即没有移植受类似问题训练的重量,因此训练往往会很慢。请记住,这可能是培训中的许多问题之一。希望能帮助到你。
答案 2 :(得分:1)
我遇到了同样的问题。从最后一个密集层中删除relu激活。为我工作。
dense2 = tf.nn.relu(tf.matmul(dense1, _weights['wd2']) + _biases['bd2'], name='fc7') # Relu activation
之后再次
out = tf.nn.softmax(tf.matmul(dense2, _weights['out']) + _biases['out'])
因此,第一个" relu"对我来说似乎是多余的。我做了类似的事情。在删除该行后,它解决了问题。