我怀疑我的 Pytorch 模型梯度消失。我知道我可以跟踪每一层的梯度并用writer.add_scalar或记录它们writer.add_histogram。然而,对于具有相对较多层数的模型,在 TensorBoard 日志上显示所有这些直方图和图表会变得有点麻烦。我并不是说它不起作用,只是每个图层都有不同的图表和直方图并滚动它们有点不方便。
我正在寻找一个图表,其中y轴(垂直)表示梯度值(特定层的梯度平均值),轴x(水平)显示层数(例如,at 的值x=1是第一层的梯度值),轴z(深度)是纪元数。
这看起来像直方图,但当然,它与直方图有本质上的不同,因为轴x不代表 beans。人们可以编写一段肮脏的代码来创建一个直方图,其中代替 bean 的是层编号,类似于(显然,这是伪代码):
fake_distribution = []
for i, layer in enumerate(model.layers):
fake_distribution += [i for j in range(int(layer.grad.mean()))]
writer.add_histogram('gradients', fake_distribution)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法。
对于我的应用程序,我只能使用预定义的操作创建一个新功能.在这种情况下是否需要定义新的操作?
我的函数的伪代码是:
z1 = myGauss(arg, arg2)
def myGauss(arg, arg2):
# Here I only used defined tensorflow operations
Run Code Online (Sandbox Code Playgroud) 我看到了关于如何在Jupyter笔记本中可视化张量流图的这个问题.我发现这个答案来自这个例子,只有一个修改(tensor.tensor_content = bytes("<stripped %d bytes>"%size, 'utf-8')被替换tensor.tensor_content = "<stripped %d bytes>"%size).但是,如果我尝试tensorflow_inception_graph.pb在可视化上重新运行它不起作用:iframe是白色的,并且没有显示节点.
如果你向我解释我做错了什么,我将非常感激.这里有一个简单的例子来重现这个问题.
进口:
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import tensorflow as tf
import numpy as np
from IPython.display import clear_output, Image, display, HTML
Run Code Online (Sandbox Code Playgroud)
创建图表:
graph = tf.Graph()
sess = tf.InteractiveSession(graph=graph)
x = tf.placeholder(tf.float32, shape=[None, 25, 25, 3], name='x')
y_true = tf.placeholder(tf.float32, shape=[None, 10], name='y_true')
y_true_cls = tf.argmax(y_true, dimension=1, name='y_true_cls')
print graph.get_operations()
Run Code Online (Sandbox Code Playgroud)
输出:
[<tensorflow.python.framework.ops.Operation at 0x115902850>,
<tensorflow.python.framework.ops.Operation at 0x115902690>,
<tensorflow.python.framework.ops.Operation at …Run Code Online (Sandbox Code Playgroud) 我制作了一个DNN回归模型来预测我们在数据表中没有的结果,但我不能制作张量板.
此代码来自https://deeplearning4j.org/linear-regression.html 以及香港大学Sunghun Kim撰写的讲义.
import tensorflow as tf
import numpy as np
tf.set_random_seed(777) #for reproducibility
# data Import
xy = np.loadtxt('Training_Data.csv', delimiter=',', dtype=np.float32)
x_data = xy[:,0:-1]
y_data = xy[:,[-1]]
# Make sure the shape and data are OK
print(x_data.shape, x_data)
print(y_data.shape, y_data)
# input place holders
X = tf.placeholder(tf.float32, shape=[None, 2])
Y = tf.placeholder(tf.float32, shape=[None, 1])
# weight & bias for nn Layers
W1 = tf.get_variable("W1", shape=[2, 512],initializer=tf.contrib.layers.xavier_initializer())
b1 = tf.Variable(tf.random_normal([512]))
L1 = tf.nn.relu(tf.matmul(X, W1) + b1)
W2 = …Run Code Online (Sandbox Code Playgroud) 我在Tensorflow中附加了一个标量汇总图的图像.如您所见,绘制了两条橙色线条.根据图例,一个对应于实际值(虚线),另一个对应于平滑值(主线).我不明白为什么这两行被绘制,因为在训练过程的每次迭代中损失是单个值.
我希望有一个人可以帮助我.谢谢
我建立摘要操作并将其添加到集合中,然后sess.run在培训/验证期间始终将摘要集合作为调用的一部分进行评估。
但是,在某些情况下,值是nan,这会使Tensorboard图变坏。(用三角形代替数据点,并且平滑度不适用于介于两者之间的nan值)。
有没有一种方法可以根据值的有效性从集合中省略特定的摘要?我可以将nan值替换为零或类似值,但是任何人为选择的值都会污染报告的真实统计信息。
我添加如下摘要:
tf.summary.scalar('scc_precision_test', precision_test, [Constants.TEST_SUMMARIES])
谢谢!
每当我尝试使用命令运行tensorboard时:
tensorboard --logdir=logs/ --host=127.0.0.1导航到日志目录后,在命令提示符下出现此错误:
OSError: [Errno 22] Invalid argument。我正在使用TensorBoard 1.13.1版,我在代码中使用了以下命令:
tensorboard = TensorBoard(log_dir='<My/Path/To/Tensorflow/Log/Directory>')
并使用以下命令调用它:
`clf.fit(X,y,batch_size=30,
epochs=15,
validation_split=0.4,
callbacks=[tensorboard]
)`
Run Code Online (Sandbox Code Playgroud) 我想使用最新的tensorflow 2.0.0a0在jupyter中运行tensorboard。使用tensorboard版本1.13.1和python 3.6。
使用
...
%tensorboard --logdir {logs_base_dir}
我得到错误:
UsageError: Line magic function %tensorboard not found
您知道可能是什么问题吗?似乎所有版本都是最新的,该命令似乎也正确。
谢谢
我正在通过以下方法尝试使用pytorch进行tensorboard:https ://pytorch.org/docs/stable/tensorboard.html
我已经安装了张量板 pip install tb-nightly
命令tensorboard --logdir=runs开始正常。
但是线 self.writer = SummaryWriter()
给出以下错误:
ModuleNotFoundError: No module named 'past'
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
tensorboard ×10
tensorflow ×8
python ×4
pytorch ×2
eoserror ×1
ipython ×1
jupyter ×1
pip ×1
python-3.x ×1
summary ×1
text ×1