tf.layers.dense()参数

units 是输出的shape

之前一直对units的理解有出入,认为units是什么这一层神经元的个数,而且tf官方文档给的也是这个含义。但是在使用的时候并不是这个含义,但是按照单元数这个含义,也可以解释通。

今天在复习tf的时候发现自己写的add_layer()函数就是tf.layers.dense()

add_layer()

这个其实就是一个函数,它的功能就是 outputs = activation(inputs * kernel + bias)。说的直白点就是完成矩阵运算。

kernel 就是常说的权重,是matrix 格式,
bias是偏置,是vector格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

def add_layer(input_data, input_size, output_size, activation_function=None):
"""
input_data, 输入的数据
input_size, 输入数据的shape
output_size, 输出数据的shape
activation_function=None 激活函数
"""
# 产生input_size行output_size列的随机数
Weights = tf.Variable(tf.random_normal([input_size, output_size]))
# 产生一行output_size列全为0.1的数
biases = tf.Variable(tf.zeros([1, output_size]) + 0.1)
# input_data * weights + biases
Wx_plus_b = tf.matmul(input_data, Weights) + biases
if activation_function is None:
output = Wx_plus_b
else:
output = activation_function(Wx_plus_b)
return output

tf.layers.dense()

这是tf.layers.dense()所需要的参数,tf忽忽略了input_size这个参数,因为和input_data.shape的数值是一样的。

inputs—->input_data
units —–> output_size

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def dense(
inputs, units,
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=init_ops.zeros_initializer(),
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name=None,
reuse=None):