gpt4 book ai didi

python - TF Graph 与代码不对应

转载 作者:行者123 更新时间:2023-11-30 09:18:13 25 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的神经网络,读取形状为1x2048的信息,并为两个类别(对象或非对象)创建分类。然而,图形结构与我认为的编码有所不同。密集层应包含在“inner_layer”的范围内,并且应从“input”占位符接收输入。相反,TF 似乎将它们视为独立层,不从“输入”接收任何信息。

此外,当尝试使用张量板摘要时,我收到一条错误消息,告诉我我没有提到为密集层的明显占位符插入输入。当省略张量板时,一切都按照我基于代码的预期工作。

我花了很多时间试图找到问题,但我想我一定忽略了一些非常基本的东西。

我在张量板上得到的图位于 this image .

对应以下代码:

tf.reset_default_graph()
keep_prob = 0.5

# Graph Strcuture
## Placeholders for input
with tf.name_scope('input'):
x_ = tf.placeholder(tf.float32, shape = [None, transfer_values_train.shape[1]], name = "input1")
y_ = tf.placeholder(tf.float32, shape = [None, num_classes], name = "labels")

## Dense Layer one with 2048 nodes
with tf.name_scope('inner_layers'):
first_layer = tf.layers.dense(x_, units = 2048, activation=tf.nn.relu, name = "first_dense")
dropout_layer = tf.nn.dropout(first_layer, keep_prob, name = "dropout_layer")
#readout layer, without softmax
y_conv = tf.layers.dense(dropout_layer, units = 2, activation=tf.nn.relu, name = "second_dense")

# Evaluation and training
with tf.name_scope('cross_entropy'):
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels = y_ , logits = y_conv),
name = "cross_entropy_layer")
with tf.name_scope('trainer'):
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)

with tf.name_scope('accuracy'):
prediction = tf.argmax(y_conv, axis = 1)
correct_prediction = tf.equal(prediction, tf.argmax(y_, axis = 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

有人知道为什么该图表与您根据代码所期望的图表如此不同吗?

最佳答案

张量板中的图形渲染可能有点令人困惑(最初),但它是正确的。看一下这张图片,我只留下了图表的 inner_layers 部分:

tensorboard

您可能会注意到:

  • first_densesecond_dense 实际上是名称范围本身(由 tf.layers.dense 函数生成) ;另见this question)。
  • 它们的输入/输出张量位于inner_layers范围内,并正确连接到dropout_layer。这里,在每个密集层中,都存在相应的线性运算:MatMulBiasAddRelu
  • 两个范围还包括变量(内核偏差),它们与inner_layers<分开显示。它们封装了与变量相关的具体操作,例如读取、分配、初始化等。first_dense中的线性操作code> 取决于 first_dense 的变量 ops,second_dense 同样如此。

    这种分离的原因是在distributed settings中变量由名为参数服务器的不同任务进行管理。它通常在不同的设备上运行(CPU 而不是 GPU),有时甚至在不同的机器上运行。换句话说,对于 tensorflow 来说,变量管理在设计上与矩阵计算不同。

    话虽如此,我很想在 tensorflow 中看到一种模式,它不会将范围拆分为变量和操作并使它们保持耦合。

除此之外,图表与代码完全匹配。

关于python - TF Graph 与代码不对应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49798531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com