#coding:utf-8
import tensorflow as tf
from tensorflow.python.framework import ops
import numpy as np
tf.reset_default_graph()
#1.prelu def prelu(x, name = 'prelu'):
with tf.variable_scope(name):
alphas = tf.get_variable('alpha', x.get_shape()[-1], initializer=tf.constant_initializer(0.25), regularizer=l2_regularizer, dtype=
tf.float32)
pos = tf.nn.relu(x)
neg = tf.multiply(alphas, (x - abs(x)) * 0.5)
return pos + neg
#2.conv with strides
def first_conv(input,num_output,name):
with tf.variable_scope(name):
zero_init = tf.zeros_initializer()
network = tf.layers.conv2d(input, num_output, kernel_size=[3, 3], strides=(2, 2), padding = 'SAME',
kernel_initializer=xavier, bias_initializer=zero_init, kernel_regularizer=l2_regularizer,
bias_regularizer = l2_regularizer)
network = prelu(network, name=name)
return network
#3.conv with residual units
def block(input, name, num_output):
with tf.variable_scope(name):
network = tf.layers.conv2d(input, num_output, kernel_size=[3, 3], strides = [1, 1],padding='SAME',
kernel_initializer=tf.random_normal_initializer(stddev=0.01), use_bias=False, kernel_regularizer= l2_regularizer)
network = prelu(network, name = 'name' + '')
network = tf.layers.conv2d(network, num_output, kernel_size=[3, 3], strides = [1, 1],padding='SAME',
kernel_initializer=tf.random_normal_initializer(stddev=0.01), use_bias=False, kernel_regularizer= l2_regularizer)
network = prelu(network, name = 'name' + '')
network = tf.add(input, network)
return network
#4.infer
l2_regularizer = tf.contrib.layers.l2_regularizer(1.0)
xavier = tf.contrib.layers.xavier_initializer_conv2d() def get_shape(tensor):
static_shape = tensor.shape.as_list()
dynamic_shape = tf.unstack(tf.shape(tensor))
dims = [s[1] if s[0] is None else s[0] for s in zip(static_shape,dynamic_shape)]
return dims
def infer(input, embedding_size=512):
with tf.variable_scope('conv1_'):
network = first_conv(input, 64, name = 'conv1')
network = block(network, 'conv1_23', 64)
with tf.variable_scope('conv2_'):
network = first_conv(network, 128, name= 'conv2')
network = block(network, 'conv2_23', 128)
network = block(network,'conv2_45', 128)
with tf.variable_scope('conv3_'):
network = first_conv(network, 256, name='conv3')
network = block(network, 'conv3_23', 256)
network = block(network, 'conv3_45', 256)
network = block(network, 'conv3_67', 256)
network = block(network, 'conv3_89', 256)
with tf.variable_scope('conv4_'):
network = first_conv(network, 512, name='conv4')
network = block(network, 'conv4_23', 512)
with tf.variable_scope('feature'):
dims = get_shape(network)
print (dims)
feature = tf.layers.dense(tf.reshape(network, [dims[0], np.prod(dims[1:])]), embedding_size, kernel_regularizer= l2_regularizer, kernel_initializer= xavier)
return feature tf.reset_default_graph()
image = tf.constant(np.random.normal(size=[1, 112, 96, 3]),dtype=tf.float32)
feature = infer(image)
print feature.get_shape()
tf.summary.FileWriter('sphereface_network', tf.get_default_graph()) #测试网络是否正确搭建 给一张图片 看网络是否能够将结果向label拟合
pred = tf.layers.dense(feature, 1)
print pred.get_shape()
loss = tf.nn.l2_loss(pred - 1)
optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(loss) with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in xrange(500):
pred_np, loss_np, _ = sess.run([pred, loss, optimizer])
if i % 20 == 0:
print (pred_np, loss_np)

tensorflow实现sphereFace网络(20层CNN)的更多相关文章

  1. Deeplearning 两层cnn卷积网络详解

    https://blog.csdn.net/u013203733/article/details/79074452 转载地址: https://www.cnblogs.com/sunshineatno ...

  2. TensorFlow 入门之手写识别CNN 三

    TensorFlow 入门之手写识别CNN 三 MNIST 卷积神经网络 Fly 多层卷积网络 多层卷积网络的基本理论 构建一个多层卷积网络 权值初始化 卷积和池化 第一层卷积 第二层卷积 密集层连接 ...

  3. 3层-CNN卷积神经网络预测MNIST数字

    3层-CNN卷积神经网络预测MNIST数字 本文创建一个简单的三层卷积网络来预测 MNIST 数字.这个深层网络由两个带有 ReLU 和 maxpool 的卷积层以及两个全连接层组成. MNIST 由 ...

  4. [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解

    技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解    http://www.52im.net/thread-1309-1-1.html   本文来自腾讯资深研发工程师罗成的技术分享, ...

  5. 【Deep Learning】两层CNN的MATLAB实现

    想自己动手写一个CNN很久了,论文和代码之间的差距有一个银河系那么大. 在实现两层的CNN之前,首先实现了UFLDL中与CNN有关的作业.然后参考它的代码搭建了一个一层的CNN.最后实现了一个两层的C ...

  6. TensorFlow创建DeepDream网络

    TensorFlow创建DeepDream网络 Google 于 2014 年在 ImageNet 大型视觉识别竞赛(ILSVRC)训练了一个神经网络,并于 2015 年 7 月开放源代码. 该网络学 ...

  7. ASP.NET知识总结(1.网络传输层)

    1.网络传输层 1应用层(HTTP.FTP.SMTP)报文Message 2传输层(TCP.UDP)报文段Segment,为运行在不同主机上的应用程序进程间提供数据 传输服务.通过套接字(Socket ...

  8. OSI/RM网络7层体系

    转自OSI/RM网络7层体系 1 物理层 这是整个OSI参考模型的最低层,它的任务就是提供网络的物理连接.所以,物理层是建立在物理介质上(而不是逻辑上的协议和会话),它提供的是机械和电气接口.主要包括 ...

  9. OSI 网络七层模型(笔记)

    一直以来我们都在使用着互联网,每天聊着qq,上着淘宝,但是却不了解怎么运行的呢,充满了好奇.今天同过了解来总结一下OSI网络七层模型: 上一张图 OSI (open system interconne ...

随机推荐

  1. js原型链理解(2)--原型链继承

    1.原型链继承 2.constructor stealing(构造借用) 3.组合继承 js中的原型链继承,运用的js原型链中的__proto__. function Super(){ this.se ...

  2. C++ opencv 数字识别

    #include "cv.h" #include "highgui.h" #include "cxcore.h" #include < ...

  3. 7 ~ express ~ body-parser 模块的使用

    一,安装 : npm install body-parser 二,加载 : var bodyParser = require('body-parser') 三,配置 : https://github. ...

  4. HTML笔记及案例

    - 了解什么是标记语言 - 了解HTML主要特性,主要变化以及发展趋势 - 了解HTML的结构标签 - 掌握HTML的主要标签(字体,图片,列表,链接,表单等标签) ### 1.网站信息页面 #### ...

  5. 美素数(HDU 4548)(打表,简化时间复杂度)

    相信大家都喜欢美的东西,让我们一起来看看美素数吧. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数",如29,本身是素数,而且2+9 = 11 ...

  6. 51Nod1085 0-1背包(一维和二维数组实现)

    背包是典型的动态规划问题,关于背包问题的详解,推荐博客:点击打开链接(这篇博客有点错误,代码for循环里错了,不过讲解 的很详细) 题目如下: 在N件物品取出若干件放在容量为W的背包里,每件物品的体积 ...

  7. django-替代为自定义的User model

    https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model Subs ...

  8. ubuntu下面嘚一些常用基本命令

    1)环境变量配置: 9 ~/.bashrcor ~/.bash_profile. sudo gedit ~/.bashrc 第一种sudo vim ~/.bashrc export PYTHONPAT ...

  9. 对自己有用的VS调试技巧

    设置下一条语句 编辑然后继续 符号越界后查看堆对象 查看数组的值 底部 设置下一条语句 返回顶部 一个典型的调试情况就是通过单步跟踪分析为什么一个函数调用失败了.当你发现一个函数调用的另一个函数返回错 ...

  10. SQL Server 2017 安装问题

    遇到问题 Polybase 要求安装 Oracle JRE7 更新 规则失败 安装完毕之后,登录提示:您试图连接的 SQL Server 实例未安装 安装完SQL Server 2017 后,无法启动 ...