应用TensorFlow高级API构建卷积神经网络(2)--api解释

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)`
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值