tf.estimator.inputs.numpy_input_fn
def numpy_input_fn(x,
y=None,
batch_size=128,
num_epochs=1,
shuffle=None,
queue_capacity=1000,
num_threads=1):
-
x是训练数据,使用numpy_input_fn时就是numpy array的格式。使用Pandas的时候就是dataframe的格式。
-
y是标签。
-
batch_size,每一次迭代的时候选择的样本个数,默认选择是128个样本。
-
num_epochs,一个epoch是指把整个数据集训练一次。
-
epoch=None,steps=100,batch_size=128:
当epoch=None的时候就是说,训练的停止条件是达到迭代次数100。(这个时候其实可以算得到整个数据集被训练了100/(3328/128)=3.84次) -
epoch=1,steps=100,batch_size=128:
整个数据集共3328条数据,batch_size为128,所以迭代26次(3328/128)时可以实现整个数据集被训练了一次,所以实际上迭代26次就停止训练了。 -
epoch=4,steps=100,batch_size=128:
和上面类似,只不过这里的epoch=4,故数据集总共需要被训练4次,故迭代次数总共需要4*(3328/128)=104次,但是104>100次,所以100次的时候训练也停止了。 -
epoch=100,steps=None,batch_size=128:
这个时候steps不指定意味着停止条件是达到epoch的次数。所以当整个数据集被训练了100次的时候停止训练。此时的迭代次数其实是(3328/128)*100=2600次。
-
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": train_data},
y=train_labels,
batch_size=100,
num_epochs=None,
shuffle=True)
eval_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x":eval_data},
y=eval_labels,
num_epochs=1,
shuffle=False)
https://blog.csdn.net/qq_22238533/article/details/79005221
tf.layers.conv2d
def conv2d(inputs,
filters,
kernel_size,
strides=(1, 1),
padding='valid',
data_format='channels_last',
dilation_rate=(1, 1),
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):
-
inputs:Tensor 输入
-
filters:整数,表示输出空间的维数(即卷积过滤器的数量)
-
kernel_size:一个整数,或者包含了两个整数的元组/队列,表示卷积窗的高和宽。如果是一个整数,则宽高相等。
-
strides:一个整数,或者包含了两个整数的元组/队列,表示卷积的纵向和横向的步长。如果是一个整数,则横纵步长相等。另外, strides 不等于1 和 dilation_rate 不等于1 这两种情况不能同时存在。
-
padding:“valid” 或者 “same”(不区分大小写)。“valid” 表示不够卷积核大小的块就丢弃,"same"表示不够卷积核大小的块就补0。
-
data_format:channels_last 或者 channels_first,表示输入维度的排序。
-
dilation_rate:一个整数,或者包含了两个整数的元组/队列,表示使用扩张卷积时的扩张率。如果是一个整数,则所有方向的扩张率相等。另外, strides 不等于1 和 dilation_rate 不等于1 这两种情况不能同时存在。
-
activation:激活函数。如果是None则为线性函数。
-
use_bias:Boolean类型,表示是否使用偏差向量。
-
kernel_initializer:卷积核的初始化。
-
bias_initializer:偏差向量的初始化。如果是None,则使用默认的初始值。
-
kernel_regularizer:卷积核的正则项
-
bias_regularizer:偏差向量的正则项
-
activity_regularizer:输出的正则函数
-
kernel_constraint:映射函数,当核被Optimizer更新后应用到核上。Optimizer 用来实现对权重矩阵的范数约束或者值约束。映射函数必须将未被影射的变量作为输入,且一定输出映射后的变量(有相同的大小)。做异步的分布式训练时,使用约束可能是不安全的。
-
bias_constraint:映射函数,当偏差向量被Optimizer更新后应用到偏差向量上。
-
trainable:Boolean类型。
-
name:字符串,层的名字。
-
reuse:Boolean类型,表示是否可以重复使用具有相同名字的前一层的权重。
https://blog.csdn.net/HappyRocking/article/details/80243790
tf.layers.max_pooling2d
def max_pooling2d(inputs,
pool_size, strides,
padding='valid', data_format='channels_last',
name=None):
- pool_size:一个整数或者2个整数的元组/列表:(pool_height,pool_width),指定池化窗口的大小。 可以是单个整数,以为所有空间维度指定相同值。
- strides:一个整数或者2个整数的元组/列表,指定池操作的步幅。 可以是单个整数,以为所有空间维度指定相同值。
- padding:字符串,“valid”或者”same”
- data_format:一个字符串,channels_last(默认)或channels_first中的一个,输入中维度的排序,channels_last对应于具有形状(batch,height, width, channels)的输入,而channels_first对应于具有形状(batch, channels, height,width)的输入。
- name:层的名称。
tf.layers.dropout
def dropout(inputs,
rate=0.5,
noise_shape=None,
seed=None,
training=False,
name=None):
- inputs:输入的张量
- rate: 丢失率,表示的是drop_prob而不是keep_prob
- training: True时会加入dropout, false即测试时不会加入dropout
- noise_shape : 一个1维的int32张量,代表了随机产生“保留/丢弃”标志的shape。
- seed : 整形变量,随机数种子。
- name: 名字。
tf.layers.Flatten
def flatten(inputs, name=None):
x = tf.placeholder(shape=(None, 4, 4), dtype='float32')
y = flatten(x)
# now `y` has shape `(None, 16)`
x = tf.placeholder(shape=(None, 3, None), dtype='float32')
y = flatten(x)
# now `y` has shape `(None, None)`