我正在运行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
我正在为初学者查看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版本.
我在MNIST上运行深度神经网络,其中损失定义如下:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, label))
该程序似乎运行正常,直到我在10000多个小批量中获得纳米损失.有时,程序正常运行直到完成.我想tf.nn.softmax_cross_entropy_with_logits是给了我这个错误.这很奇怪,因为代码只包含mul和add操作.
也许我可以用:
if cost == "nan":
optimizer = an empty optimizer
else:
...
optimizer = real optimizer
Run Code Online (Sandbox Code Playgroud)
但我找不到那种类型nan.我该如何检查变量nan?
我怎么能解决这个问题?
我正在尝试在训练我的图形时计算权重的熵并将其用于正则化.这当然涉及到w*tf.log(w),并且随着我的权重的变化,其中一些必然会进入导致NaN返回的区域.
理想情况下,我会在图表设置中包含一行:
w[tf.is_nan(w)] = <number>
Run Code Online (Sandbox Code Playgroud)
但tensorflow不支持这样的分配.我当然可以创建一个操作,但这不起作用,因为我需要在执行整个图形时发生它.我不能等待图表执行然后"修复"我的权重,必须是图执行的一部分.
我无法np.nan_to_num在文档中找到相应的内容.
有人有想法吗?
(由于显而易见的原因,添加epsilon不起作用)
我正在尝试编写按组件应用的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) 我正在尝试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?,解决方案有效.
使用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) 当我尝试在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环境中复制我的模型。我的网络设置如下:
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) 我试图破解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)