随笔 - 1762  文章 - 0  评论 - 109  阅读 - 431万

tf.layers.dense

https://stackoverflow.com/questions/45693020/is-tf-layers-dense-a-single-layer

tf.layers.dense  is only one layer with a amount of nodes. You can check on TensorFlow web site about tf.layers.dense (tf.compat.v1.layers.dense)

layer1 = tf.layers.dense(inputs=pool2_flat, units=1024, activation=tf.nn.relu)
layer2 = tf.layers.dense(inputs=layer1, units=1024, activation=tf.nn.relu)
 tf.layers.dense()只是含有很多节点的一个层,是神经网络的一层。
 
下面的内容来自:
 

参考:https://cuiqingcai.com/5715.html
tf.layers 模块提供的方法有:

Input(…): 用于实例化一个输入 Tensor,作为神经网络的输入。
average_pooling1d(…): 一维平均池化层
average_pooling2d(…): 二维平均池化层
average_pooling3d(…): 三维平均池化层
batch_normalization(…): 批量标准化层
conv1d(…): 一维卷积层
conv2d(…): 二维卷积层
conv2d_transpose(…): 二维反卷积层
conv3d(…): 三维卷积层
conv3d_transpose(…): 三维反卷积层
dense(…): 全连接层
dropout(…): Dropout层
flatten(…): Flatten层,即把一个 Tensor 展平
max_pooling1d(…): 一维最大池化层
max_pooling2d(…): 二维最大池化层
max_pooling3d(…): 三维最大池化层
separable_conv2d(…): 二维深度可分离卷积层

dense

dense,即全连接网络,layers 模块提供了一个 dense() 方法来实现此操作,定义在 tensorflow/python/layers/core.py 中,下面我们来说明一下它的用法。

 

 

dense(
    inputs,
    units,
    activation=None,
    use_bias=True,
    kernel_initializer=None,
    bias_initializer=tf.zeros_initializer(),
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    trainable=True,
    name=None,
    reuse=None
)

 

 

 

参数说明如下:
inputs:必需,即需要进行操作的输入数据。
units:必须,即神经元的数量。
activation:可选,默认为 None,如果为 None 则是线性激活。
use_bias:可选,默认为 True,是否使用偏置。
kernel_initializer:可选,默认为 None,即权重的初始化方法,如果为 None,则使用默认的 Xavier 初始化方法。
bias_initializer:可选,默认为零值初始化,即偏置的初始化方法。
kernel_regularizer:可选,默认为 None,施加在权重上的正则项。
bias_regularizer:可选,默认为 None,施加在偏置上的正则项。
activity_regularizer:可选,默认为 None,施加在输出上的正则项。
kernel_constraint,可选,默认为 None,施加在权重上的约束项。
bias_constraint,可选,默认为 None,施加在偏置上的约束项。
trainable:可选,默认为 True,布尔类型,如果为 True,则将变量添加到 GraphKeys.TRAINABLE_VARIABLES 中。
name:可选,默认为 None,卷积层的名称。
reuse:可选,默认为 None,布尔类型,如果为 True,那么如果 name 相同时,会重复利用。
返回值: 全连接网络处理后的 Tensor。

下面我们用一个实例来感受一下它的用法:

 

 

x = tf.layers.Input(shape=[32])
print(x)
y1 = tf.layers.dense(x, 16, activation=tf.nn.relu)
print(y1)
y2 = tf.layers.dense(y1, 5, activation=tf.nn.sigmoid)
print(y2)

 

 

首先我们用 Input 定义了 [?, 32] 的输入数据,然后经过第一层全连接网络,此时指定了神经元个数为 16,激活函数为 relu,接着输出结果经过第二层全连接网络,此时指定了神经元个数为 5,激活函数为 sigmoid,最后输出,结果如下:

 

 


Tensor("input_layer_1:0", shape=(?, 32), dtype=float32)

Tensor("dense/Relu:0", shape=(?, 16), dtype=float32)

Tensor("dense_2/Sigmoid:0", shape=(?, 5), dtype=float32)

 

 

可以看到输出结果的最后一维度就等于神经元的个数,这是非常容易理解的。



作者:听风1996
链接:https://www.jianshu.com/p/3b8b810a9e56
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted on   一杯明月  阅读(556)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2019-08-06 tf.logging.set_verbosity
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示