在TensorFlow中封装好了一个高级库,tf.contrib.layers库封装了很多的函数,使用这个高级库来开发将会提高效率,卷积函数使用tf.contrib.layers.conv2d,池化函数使用tf.contrib.layers.max_pool2d和tf.contrib.layers.avg_pool2d,全连接函数使用 tf.contrib.layers.fully_connected,下面来看里面封装好的函数接口:

以最复杂的卷积为例,其他的几个函数与之类似:

layers.conv2d(inputs,
num_outputs,
kernel_size,
stride,
padding='SAME',
data_format=None,
rate=1,
activation_fn=tf.nn.relu,
normalizer_fn=None,
normalizer_params=None,
weights_initializer=initializers.xavier_initializers(),
weights_regularizer=None,
reuse=None,
variables_collections=None,
outputs_collections=None,
trainable=True,
scope=None)

常用的参数说明:

inputs:输入的数据

num_outputs:设置输出的channel数量。这里不用在设置输入的channel的数量了,该函数会自动根据shape来判断。

kernel_size:卷积核大小,不需要带上batch和channel,只需要输入尺寸即可,[ 5, 5 ]就代表5x5大小的卷积核,如果长宽都一样,可以直接写一个5就行了。

stride:步长,默认的长宽都是相等的步长,卷积时一般都用1,默认的值也是1,如果长宽都不同,也可以用一个数组[ 1,2 ]来表示。

padding:设置填充的规则。

activation_fn:输出后的激活函数。

weights_initializer:权重的初始化方式,默认使用的是 initializers.xavier_initializers(),能够使得所有层的梯度保持大体相同,biases_initializer同理。

weights_regularizer:正则化项,可以加入正则函数。

trainable:是否可训练,如作为训练节点,必须设置为True。

下面我们使用layers构建一个网络模型:

import tensorflow.contrib.layers as layers

x = tf.placeholder(dtype=tf.float32, shape=[None, 32, 32, 3])
y = tf.placeholder(dtype=tf.float32, shape=[None, 10]) x_images = tf.reshape(x, [-1, 32, 32, 3]) h_conv1 = layers.conv2d(x_images, 64, 3, 1, activation_fn=tf.nn.relu)
h_pool1 = layers.max_pool2d(h_conv1, [2, 2], stride=2, padding='SAME') h_conv2 = layers.conv2d(h_pool1, 64, 3, 1, activation_fn=tf.nn.relu)
h_pool2 = layers.max_pool2d(h_conv2, [2, 2], stride=2, padding='SAME') h_conv3 = layers.conv2d(h_pool2, 32, 3, 1, activation_fn=tf.nn.relu)
h_pool3 = layers.max_pool2d(h_conv3, [2, 2], stride=2, padding='SAME') h_conv4 = layers.conv2d(h_pool3, 16, 3, 1, activation_fn=tf.nn.relu)
h_pool4 = layers.max_pool2d(h_conv4, [2, 2], stride=2, padding='SAME') h_conv5 = layers.conv2d(h_pool4, 10, 3, 1, activation_fn=tf.nn.relu)
y_pool = tf.reshape(h_conv5, shape=[-1, 40]) y_pool = layers.fully_connected(y_pool, 10, activation_fn=None) cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=y_pool)) optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)

使用layers是不是极大的简化了网络默写的代码,提升了我们的代码效率。

TensorFlow——tf.contrib.layers库中的相关API的更多相关文章

  1. TensorFlow:tf.contrib.layers.xavier_initializer

    xavier_initializer( uniform=True, seed=None, dtype=tf.float32 ) 该函数返回一个用于初始化权重的初始化程序 “Xavier” .这个初始化 ...

  2. TensorFlow中的L2正则化函数:tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()的用法与异同

    tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()都是TensorFlow中的L2正则化函数,tf.contrib.layers.l2_regula ...

  3. 第十六节,使用函数封装库tf.contrib.layers

    这一节,介绍TensorFlow中的一个封装好的高级库,里面有前面讲过的很多函数的高级封装,使用这个高级库来开发程序将会提高效率. 我们改写第十三节的程序,卷积函数我们使用tf.contrib.lay ...

  4. 关于tensorflow里面的tf.contrib.rnn.BasicLSTMCell 中num_units参数问题

    这里的num_units参数并不是指这一层油多少个相互独立的时序lstm,而是lstm单元内部的几个门的参数,这几个门其实内部是一个神经网络,答案来自知乎: class TRNNConfig(obje ...

  5. tf.contrib.layers.fully_connected参数笔记

    tf.contrib.layers.fully_connected 添加完全连接的图层. tf.contrib.layers.fully_connected(    inputs,    num_ou ...

  6. 【Socket编程】Java中网络相关API的应用

    Java中网络相关API的应用 一.InetAddress类 InetAddress类用于标识网络上的硬件资源,表示互联网协议(IP)地址. InetAddress类没有构造方法,所以不能直接new出 ...

  7. tf.contrib.layers.xavier_initializer

    https://blog.csdn.net/yinruiyang94/article/details/78354257xavier_initializer( uniform=True, seed=No ...

  8. app自动化测试中的相关api

    这个说的api即python自动化测试中经常会使用到的一些api,具体如下: 1.find_element_by_id/find_elements_by_id 定位元素api,使用方法如下: driv ...

  9. Java中网络相关API的应用——InetAddress&URL

    一.InetAddress类 标识网络上的硬件资源 package com.homework; import java.net.InetAddress; import java.net.Unknown ...

随机推荐

  1. php Restful设计

    1.restful是基于资源的,面向资源架构风格(一个链接,一张图.一个文本等等) 2.restful的http协议 2.1 url: 2.1.1 port 服务端口,默认为80 2.1.2 path ...

  2. Vue 路由规则--传参数

    1,query方法去获取参数 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. gyp verb check python checking for Python executable "python2" in the PATH

    缺少python2.7支持 可快速使用以下语句完成安装 npm install --global --production windows-build-tools 到时候会自动下载python的 如果 ...

  4. Mac PHPStorm清除SVN配置缓存

  5. Moq基础 判断方法被执行

    如果想知道注入的类的某个方法被使用了几次,就可以通过 mock 提供的方法进行判断方法有没被执行或被使用多少次 本文是一个系列,具体请看 Moq基础(一) 为什么需要单元测试框架 Moq基础(二) 快 ...

  6. es6笔记 day3---数组新增东西

    Array.from()的作用就是把类数组转成数组.所谓类数组,就是有长度的数组 ----------------------------------------------------------- ...

  7. ZR提高失恋测3

    ZR提高失恋测3 题目链接 (感觉这一场比以往的简单了一些) 估分 100 + 40 + 40 得分 100 + 60 + 40 ??? A 首先,我们能够想到一个比较简单的\(n^2\)做法, 枚举 ...

  8. git 通过 SublimeMerge 处理冲突

    在使用 Git 的时候,如果是多个小伙伴开发,那么如果同时修改一个文件将出现冲突.也就是在自动合并的时候不知道使用哪个代码才对,此时就需要合并工具的协助.我找了很久发现 SublimeMerge 是界 ...

  9. maxmind geoip2使用笔记

    客户需求如下,nginx的访问日志中ip,匹配出对应的国家,省份和城市,然后给我了一个maxmind的连接参考. 查找资料,有做成hive udf的使用方式, 我们项目中一直使用 waterdrop ...

  10. 《提升能力,涨薪可待》-Java并发之AQS全面详解

    欢迎关注公众号[Ccww笔记],原创技术文章第一时间推出 一.AQS是什么?有什么用? AQS全称AbstractQueuedSynchronizer,即抽象的队列同步器,是一种用来构建锁和同步器的框 ...