【问题标题】:Output from fully connected network in tensorflow张量流中全连接网络的输出
【发布时间】:2017-08-14 17:08:18
【问题描述】:
weights = {

# 5x5 conv, 1 input, 32 outputs

'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])),
`# 5x5 conv, 32 inputs, 64 outputs`

'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])), 

# fully connected, 7*7*64 inputs, 1024 outputs
'wd1': tf.Variable(tf.random_normal([7*7*64, 1024])), 
 # 1024 inputs, 10 outputs (class prediction)



'out': tf.Variable(tf.random_normal([1024, n_classes])) 


}

在此代码中,全连接层的输出为 1024,但我无法理解此“1024”是从哪个计算生成的,并且我无法从 tensorflow 文档中找到任何令人满意的答案。以及此输出大小如何影响预测结果. 提前致谢。

【问题讨论】:

    标签: tensorflow deep-learning


    【解决方案1】:

    在这种情况下,1024 是全连接/隐藏层的维度。 wd1 有一个到 1024 的扇出,然后返回到 10 个输出类。因此,正如深度学习中经常发生的那样,1024 不是计算的结果,而是一个超参数。

    【讨论】:

      【解决方案2】:

      像 1024 这样的数字通常有些经验性,具体取决于数据和目标。

      总的来说,我认为这个问题的影响太多,无法简明扼要地回答。我将在问题的受限和假设上下文中回答:卷积网络。您描述的那种网络通常具有比目标类数更多的节点的隐藏层(这是一个分类器,对吗?)。

      在您的情况下,最后一个隐藏层有 1024 个节点,比 10 个输出类多。是必须的号码吗?这取决于您的数据量、多样性等。如果没有上下文和目标,这个数字并没有多大意义。

      我们通常可以确信的至少:数字高于输出类。这样做,网络能够存储“大量”特征来描述类。然后输出层将这些特征作为输入,并计算组合到预期的类数。

      【讨论】:

      • 实际上当我改变这个数字时,分类变化的结果。有时当我增加这个数字时,有时效率会更高。所以我无法理解具体应该使用哪个值。
      • 更改数字会影响您的结果。也运行几次——记住所涉及的随机过程。想象一下,你有一个窗帘,想把它铺在你的沙发上。您希望窗帘尽可能符合您的沙发形状,只需将其铺在沙发上并盖住即可。你可以得到很好的结果,但会有颠簸和褶皱。 ML 有点相似,这就是拟合和过拟合等术语的原因。在您的经验和独创性的指导下,进行了很多尝试和失败。除了这个类比,请查看 Hinton 关于如何选择 NN 层的在线建议。
      猜你喜欢
      • 1970-01-01
      • 2016-05-05
      • 2019-05-19
      • 1970-01-01
      • 2018-05-05
      • 2018-10-28
      • 2021-05-17
      • 2018-02-15
      • 2017-10-07
      相关资源
      最近更新 更多