【问题标题】:TF-slim layers countTF-slim 层数
【发布时间】:2017-10-28 19:02:19
【问题描述】:

下面的代码是代表一层还是两层?我很困惑,因为神经网络中不应该也有一个输入层吗?

input_layer = slim.fully_connected(input, 6000, activation_fn=tf.nn.relu)
output = slim.fully_connected(input_layer, num_output)

它是否包含隐藏层?我只是想能够可视化网络。提前致谢!

【问题讨论】:

    标签: tensorflow neural-network tf-slim


    【解决方案1】:

    你有一个带有一个隐藏层的神经网络。在您的代码中,input 对应于上图中的“输入”层。 input_layer 就是图像所说的“隐藏”。 output 就是图片所说的“输出”。

    请记住,神经网络的“输入层”不是传统的全连接层,因为它只是未经激活的原始数据。这有点用词不当。上图中输入层的那些神经元与隐藏层或输出层的神经元是不一样的。

    【讨论】:

    • 谢谢!现在说得通了!那么,我的代码将代表您提出的那个 3 层神经网络,对吗?
    • 正确。输入大小是代码中input 的大小。隐藏层大小为 6000。输出层大小为num_output
    【解决方案2】:

    来自tensorflow-slim

    此外,TF-Slim 的 slim.stack 运算符允许调用者重复应用具有不同参数的相同操作来创建堆栈或层塔。 slim.stack 还为每个创建的操作创建一个新的 tf.variable_scope。例如,创建多层感知器 (MLP) 的简单方法:

    # Verbose way:
    x = slim.fully_connected(x, 32, scope='fc/fc_1')
    x = slim.fully_connected(x, 64, scope='fc/fc_2')
    x = slim.fully_connected(x, 128, scope='fc/fc_3')
    
    # Equivalent, TF-Slim way using slim.stack:
    slim.stack(x, slim.fully_connected, [32, 64, 128], scope='fc')
    

    所以这里提到的网络是一个[32, 64,128]网络——一个隐藏大小为64的层。

    【讨论】:

    • 感谢您的评论!那么,这 32 个神经元会代表输入层吗?假设我们有一个包含 1000 个特征的输入。这是否意味着输入层必须将 1000 个特征压缩为输入层的 32 个神经元?之后,从输入层到第一个隐藏层是否会有 32x64 权重连接?抱歉问题,我只是想了解一下!
    • @dooder 问题总是好的!但是我无法回答这个问题,因为我从不使用 Tensorflow。所以我不知道价值观是如何凝聚的。但是,如果你有 32 个神经元层和 64 个神经元层,那么连接数确实是 32 * 64。
    猜你喜欢
    • 2018-07-14
    • 2018-07-11
    • 2017-11-30
    • 2017-11-06
    • 2018-03-04
    • 1970-01-01
    • 2018-09-15
    • 2017-02-05
    • 2017-01-22
    相关资源
    最近更新 更多