Tensorflow layers.Dense接口的使用

tf.layers.Dense是一个十分钟要的神经网络接口,在此详细介绍一下该接口的使用,以便刚入门的小伙伴参考,也为自己以后学习作为记录。

tf.layers.Dense:可以理解一个全连接层  相当于添加一个全连接网络层。tensorflow2的API接口地址:https://tensorflow.google.cn/api_docs/python/tf/keras/layers/Dense?hl=en

Dense的函数原型:

tf.keras.layers.Dense(
    units, activation=None, use_bias=True, kernel_initializer='glorot_uniform',
    bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None,
    activity_regularizer=None, kernel_constraint=None, bias_constraint=None,
    **kwargs
)

 

参数:

  • units:整数或长整数,输出空间的维数,可以理解为filters数量.
  • activation:激活功能(可调用),将其设置为“None”以保持线性激活.
  • use_bias:Boolean,表示该层是否使用偏置参数.
  • kernel_initializer:权重矩阵的初始化函数;如果为None(默认),则使用tf.get_variable使用的默认初始化程序初始化权重.
  • bias_initializer:偏置的初始化函数.
  • kernel_regularizer:权重矩阵的正则化函数.
  • bias_regularizer:正规函数的偏差.
  • activity_regularizer:输出的正则化函数.
  • kernel_constraint:由Optimizer更新后应用于内核的可选投影函数(例如,用于实现层权重的范数约束或值约束).该函数必须将未投影的变量作为输入,并且必须返回投影变量(必须具有相同的形状).在进行异步分布式训练时,使用约束是不安全的.
  • bias_constraint:由Optimizer更新后应用于偏置的可选投影函数.

属性

  • activity_regularizer

    可选的正则化函数用于该层的输出.

  • dtype
  • graph
  • input

    检索图层的输入张量.

    仅适用于图层只有一个输入,即它是否连接到一个输入层.

    返回:

    输入张量或输入张量列表.

    可能引发的异常:

    • AttributeError:如果图层连接到多个输入图层.
    • RuntimeError:如果在Eager模式下调用.
    • AttributeError:如果未找到入站节点.
  • input_shape

    检索图层的输入形状.

    仅适用于图层只有一个输入,即它是否连接到一个输入层,或者所有输入具有相同形状的情况.

    返回:

    输入形状,作为整数形状元组(或形状元组列表,每个输入张量一个元组).

    可能引发的异常:

    • AttributeError:如果图层没有定义的input_shape.
    • RuntimeError:如果在Eager模式下调用.
  • losses

    与此Layer相关的损失.

    请注意,在急切执行时,获取此属性会计算正规则.使用图形执行时,已经创建了变量正则化运算,并且只是在这里返回.

    返回:

    张量列表.

  • name
  • non_trainable_variables
  • non_trainable_weights
  • output

    检索图层的输出张量.

    仅适用于图层只有一个输出,即它是否连接到一个输入层.

    返回:

    输出张量或输出张量列表.

    可能引发的异常:

    • AttributeError:如果图层连接到多个输入图层.
    • RuntimeError:如果在Eager模式下调用.
  • output_shape

    检索图层的输出形状.

    仅适用于图层具有一个输出,或者所有输出具有相同形状的情况.

    返回:

    输出形状,作为整数形状元组(或形状元组列表,每个输出张量一个元组).

    可能引发的异常:

    • AttributeError:如果图层没有定义的输出形状.
    • RuntimeError:如果在Eager模式下调用.
  • scope_name
  • trainable_variables
  • trainable_weights
  • updates
  • variables

    返回所有图层变量/权重的列表.

    返回:

    变量列表.

  • weights

    返回所有图层变量/权重的列表.

    返回:

    变量列表.

上面参考的是w3cschool的解释。

下面举个DCGANS的输入层的使用例子:

例如:model.add(layers.Dense(7*7*256, use_bias=False, input_shape=(100,)))

       在神经网络的输入层使用属性input_shape定义输入检索图层的输入形状,input_shape其实就是每个batch输入的形状,例如DCGANS第一层这个例子,表明我每次输入的数据size为100,并且对单次数据的形状不感兴趣。

       不是很明确的话,再举个例子,如果我的input_shape修为(100,200),则说明我单次数据的size为100,并且数每个向量长为200,而且我对单次的向量数量不感兴趣。

       如果还是不明确的的话,那么咱们在将input_shape修改为(100,200,260),说明我的单次数据size为100,单次数据的向量长度为100,单次的向量数量为260个。如果输入的是图片的话,说明filter数量为100,图片的宽和高分别为200和260。

     通过上面的三个说明,小伙伴们应该对input_shape属性的使用较明确了吧^_^,如果不是很明确欢迎留言或者私信。

         这个DCGANS第一层的例子中,use_bias=False,不需要偏置参数。对不知道偏置的作用的小伙伴简单介绍一下,直接理解偏置的作用是给神经网络增加了平移的能力。翻译到深度学习里面就是:相当于提高了输入数据对输出结果的控制能力。想象一下在神经网络中在神经元中,output = sum (weights * inputs) + bias,如bias>0,则说明较小的inputs+bias(bias>0),则output更大。

上面例子的第一个参数为7*7*256,即units = 7*7*256,就是说输入数据的深度为7*7*256。

        总结一下Dense,就是对神经网络设置了一个全连接层,通过DCGANS的例子说明一下该接口的使用。至于其他参数和属性,有兴趣的小伙伴可以再调试使用一下,也欢迎大家一起分享相关知识。

 

 

你可能感兴趣的:(tensorflow,神经网络,深度学习)