相关疑难解决方法(0)

如何在TensorFlow中调试NaN值?

我正在运行TensorFlow,而我碰巧有一些产生NaN的东西.我想知道它是什么,但我不知道该怎么做.主要问题是在"正常"程序程序中,我只是在执行操作之前编写一个print语句.TensorFlow的问题在于我不能这样做,因为我首先声明(或定义)图形,因此向图形定义添加print语句没有帮助.是否有任何规则,建议,启发式方法,以及追踪可能导致NaN的原因的任何事情?


在这种情况下,我更准确地知道要查看哪一行,因为我有以下内容:

Delta_tilde = 2.0*tf.matmul(x,W) - tf.add(WW, XX) #note this quantity should always be positive because its pair-wise euclidian distance
Z = tf.sqrt(Delta_tilde)
Z = Transform(Z) # potentially some transform, currently I have it to return Z for debugging (the identity)
Z = tf.pow(Z, 2.0)
A = tf.exp(Z) 
Run Code Online (Sandbox Code Playgroud)

当这一行存在时,我知道它返回由我的摘要编写者声明的NaN.为什么是这样?有没有办法至少探索Z在其平方根后具有什么价值?


对于我发布的具体示例,我试过tf.Print(0,Z)但没有成功,它什么都没打印.如:

Delta_tilde = 2.0*tf.matmul(x,W) - tf.add(WW, XX) #note this quantity should always be positive because its pair-wise euclidian distance
Z = tf.sqrt(Delta_tilde)
tf.Print(0,[Z]) # <-------- TF PRINT STATMENT
Z …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network conv-neural-network tensorflow

45
推荐指数
6
解决办法
2万
查看次数

为什么在增加批量大小时TensorFlow示例会失败?

我正在为初学者查看Tensorflow MNIST示例,并发现在此部分中:

for i in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
Run Code Online (Sandbox Code Playgroud)

将批量大小从100更改为高于204会导致模型无法收敛.它可以达到204,但是在205和我试过的任何更高的数字,精度最终将<10%.这是一个错误,关于算法的东西,还有什么?

这是运行OS X的二进制安装,似乎是0.5.0版本.

python tensorflow

15
推荐指数
3
解决办法
8106
查看次数

如何解决南方损失?

问题

我在MNIST上运行深度神经网络,其中损失定义如下:

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, label))

该程序似乎运行正常,直到我在10000多个小批量中获得纳米损失.有时,程序正常运行直到完成.我想tf.nn.softmax_cross_entropy_with_logits是给了我这个错误.这很奇怪,因为代码只包含muladd操作.

可能解决方案

也许我可以用:

if cost == "nan":
  optimizer = an empty optimizer 
else:
  ...
  optimizer = real optimizer
Run Code Online (Sandbox Code Playgroud)

但我找不到那种类型nan.我该如何检查变量nan

我怎么能解决这个问题?

python nan tensorflow

9
推荐指数
4
解决办法
3万
查看次数

Tensorflow:如何将NaN转换为数字?

我正在尝试在训练我的图形时计算权重的熵并将其用于正则化.这当然涉及到w*tf.log(w),并且随着我的权重的变化,其中一些必然会进入导致NaN返回的区域.

理想情况下,我会在图表设置中包含一行:

w[tf.is_nan(w)] = <number>
Run Code Online (Sandbox Code Playgroud)

但tensorflow不支持这样的分配.我当然可以创建一个操作,但这不起作用,因为我需要在执行整个图形时发生它.我不能等待图表执行然后"修复"我的权重,必须是图执行的一部分.

我无法np.nan_to_num在文档中找到相应的内容.

有人有想法吗?

(由于显而易见的原因,添加epsilon不起作用)

python nan tensorflow

7
推荐指数
1
解决办法
6580
查看次数

在 Keras/Tensorflow 中实现可训练的广义 Bump 函数层

我正在尝试编写按组件应用的Bump 函数的以下变体:

广义凹凸函数方程,

在哪里 ?可训练;但它不起作用(下面报告了错误)。


我的尝试:

这是我到目前为止编码的内容(如果有帮助的话)。假设我有两个函数(例如):

  def f_True(x):
    # Compute Bump Function
    bump_value = 1-tf.math.pow(x,2)
    bump_value = -tf.math.pow(bump_value,-1)
    bump_value = tf.math.exp(bump_value)
    return(bump_value)

  def f_False(x):
    # Compute Bump Function
    x_out = 0*x
    return(x_out)

class trainable_bump_layer(tf.keras.layers.Layer):

    def __init__(self, *args, **kwargs):
        super(trainable_bump_layer, self).__init__(*args, **kwargs)

    def build(self, input_shape):
        self.threshold_level = self.add_weight(name='threshlevel',
                                    shape=[1],
                                    initializer='GlorotUniform',
                                    trainable=True)

    def call(self, input):
        # Determine Thresholding Logic
        The_Logic = tf.math.less(input,self.threshold_level)
        # Apply Logic
        output_step_3 = tf.cond(The_Logic, 
                                lambda: f_True(input),
                                lambda: f_False(input))
        return output_step_3
Run Code Online (Sandbox Code Playgroud)

错误报告:

    Train on 100 samples …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras tensorflow tf.keras

7
推荐指数
0
解决办法
486
查看次数

TensorFlow的ReluGrad声称输入不是有限的

我正在尝试TensorFlow而且我遇到了一个奇怪的错误.我编辑了深度MNIST示例以使用另一组图像,并且算法再次很好地收敛,直到迭代8000(当时的精度为91%),当它崩溃时出现以下错误.

tensorflow.python.framework.errors.InvalidArgumentError: ReluGrad input is not finite
Run Code Online (Sandbox Code Playgroud)

起初我认为可能有些系数达到浮点数的极限,但在所有权重和偏差上加上l2正则化并没有解决问题.它总是第一个来自堆栈跟踪的relu应用程序:

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
Run Code Online (Sandbox Code Playgroud)

我现在只在CPU上工作.知道是什么原因造成的,以及如何解决这个问题?

编辑:我追溯到这个问题Tensorflow NaN bug?,解决方案有效.

gradient-descent tensorflow

6
推荐指数
2
解决办法
4610
查看次数

tensorflow.equal()上的形状不相容,用于正确的预测评估

使用Tensorflow的MNIST教程,我尝试使用"面部数据库"创建一个用于人脸识别的卷积网络.

图像大小为112x92,我使用3个卷积层将其减少到6 x 5,如此处所示

我在卷积网络上非常新,我的大部分层声明是通过类比Tensorflow MNIST教程制作的,它可能有点笨拙,所以请随时向我提出建议.

x_image = tf.reshape(x, [-1, 112, 92, 1])

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
h_pool1 = max_pool_2x2(h_conv1)

W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
h_pool2 = max_pool_2x2(h_conv2)

W_conv3 = weight_variable([5, 5, 64, 128])
b_conv3 = bias_variable([128])
h_conv3 = tf.nn.relu(conv2d(h_pool2, W_conv3) + b_conv3)
h_pool3 = max_pool_2x2(h_conv3)

W_conv4 = weight_variable([5, 5, 128, 256])
b_conv4 = bias_variable([256])
h_conv4 = tf.nn.relu(conv2d(h_pool3, W_conv4) + b_conv4) …
Run Code Online (Sandbox Code Playgroud)

neural-network conv-neural-network tensorflow

6
推荐指数
1
解决办法
5520
查看次数

来自Tensorflow中的sparse_softmax_cross_entropy_with_logits的NaN

当我尝试在tensorflow中使用sparse_softmax_cross_entropy_with_logits丢失函数时,我得到NaN.我有一个简单的网络,如:

layer = tf.nn.relu(tf.matmul(inputs, W1) + b1)
layer = tf.nn.relu(tf.matmul(layer, W2) + b2)
logits = tf.matmul(inputs, W3) + b3
loss = tf.sparse_softmax_cross_entropy_with_logits(logits, labels)
Run Code Online (Sandbox Code Playgroud)

我有很多类(~10000),所以我想我得到了NaN,因为至少有一个我的例子中对应于正确类的logit被截断为零.有办法避免这种情况吗?

python tensorflow

6
推荐指数
2
解决办法
7348
查看次数

在TensorFlow中保存或导出权重和偏差以进行非Python复制

我建立了一个神经网络,该网络的性能相当好,我想在非Python环境中复制我的模型。我的网络设置如下:

sess = tf.InteractiveSession()
x = tf.placeholder(tf.float32, shape=[None, 23])
y_ = tf.placeholder(tf.float32, shape=[None, 2])
W = tf.Variable(tf.zeros([23,2]))
b = tf.Variable(tf.zeros([2]))
sess.run(tf.initialize_all_variables())
y = tf.nn.softmax(tf.matmul(x,W) + b)
Run Code Online (Sandbox Code Playgroud)

如何获得我的权重和偏见可解译的.csv或.txt?

编辑:以下是我的完整脚本:

import csv
import numpy
import tensorflow as tf

data = list(csv.reader(open("/Users/sjayaram/developer/TestApp/out/production/TestApp/data.csv")))
[[float(j) for j in i] for i in data]
numpy.random.shuffle(data)
results=data

#delete results from data
data = numpy.delete(data, [23, 24], 1)
#delete data from results
results = numpy.delete(results, range(23), 1)

sess = tf.InteractiveSession()
x = tf.placeholder(tf.float32, shape=[None, 23])
y_ = tf.placeholder(tf.float32, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network tensorflow

5
推荐指数
1
解决办法
6802
查看次数

学习率大于0.001会导致错误

我试图破解Udacity深度学习课程(作业3 - 正规化)和Tensorflow mnist_with_summaries.py教程中的代码.我的代码似乎运行正常

https://github.com/llevar/udacity_deep_learning/blob/master/multi-layer-net.py

但是有些奇怪的事情正在发生.分配都使用0.5的学习率,并且在某些时候引入指数衰减.但是,当我将学习率设置为0.001(衰减或不衰减)时,我放在一起的代码只运行良好.如果我将初始速率设置为0.1或更高,我会收到以下错误:

Traceback (most recent call last):
  File "/Users/siakhnin/Documents/workspace/udacity_deep_learning/multi-layer-net.py", line 175, in <module>
    summary, my_accuracy, _ = my_session.run([merged, accuracy, train_step], feed_dict=feed_dict)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 340, in run
    run_metadata_ptr)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 564, in _run
    feed_dict_string, options, run_metadata)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 637, in _do_run
    target_list, options, run_metadata)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 659, in _do_call
    e.code)
tensorflow.python.framework.errors.InvalidArgumentError: Nan in summary histogram for: layer1/weights/summaries/HistogramSummary
     [[Node: layer1/weights/summaries/HistogramSummary = HistogramSummary[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](layer1/weights/summaries/HistogramSummary/tag, layer1/weights/Variable/read)]]
Caused by op u'layer1/weights/summaries/HistogramSummary', defined at:
  File "/Users/siakhnin/Documents/workspace/udacity_deep_learning/multi-layer-net.py", line 106, …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

1
推荐指数
1
解决办法
2106
查看次数