#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. AVCodecContext 结构体

    typedef struct AVCodecContext { int bit_rate; int frame_number; //扩展数据,如mov 格式中audio trak 中aac 格式中es ...

  2. Oracle:文字与字符串不匹配

    执行方法的时候,方法在本地跑是正常,到测试环境报错,错误代码为 ADD_MONTHS(to_date(nvl(T2.EXEC_TIME,t1.DISTRIBUTE_TIME+1),'yyyy-mm-d ...

  3. 面试官,不要再问我“Java虚拟机类加载机制”了(转载)

    关于Java虚拟机类加载机制往往有两方面的 面试题:根据程序判断输出结果和讲讲虚拟机类加载机制的流程.其实这两类题本质上都是考察面试者对Java虚拟机类加载机制的了解. 面试题试水 现在有这样一道判断 ...

  4. div 100% 填充页面

    css中 html,body{ margin:0; padding:0; height:100%; }

  5. COGS1487 麻球繁衍

    不会做%%http://blog.csdn.net/doom_bringer/article/details/50428503 #include<bits/stdc++.h> #defin ...

  6. 二十四、CI框架之URL辅助函数

    一.控制器代码如下: 二.view的显示代码中,关于路径,我们可以用另外一种方法来写, 如: "/CodeIgniter-3.1.10/index.php/welcome/add" ...

  7. Alpha版(内部测试版发布)

    使用说明: 使用环境:android 5.0以上 使用流程: 1.注册与登陆 可以通过游客和用户两个模式登陆 用户模式:进入后会有模拟位置图,每一环代表不同的距离 底部菜单栏表示不同的功能,消息栏可以 ...

  8. mybatis+maven+父子多模块进行crud以及动态条件查询

    使用IDEA创建maven项目,File→New→Project→maven→Next→填写GroupId(例:com.zyl)和ArtifactId(mybatis-demo-parent)→Nex ...

  9. PAT A1015-1016

    A 1015 Reversible Primes 看清题意即可.给的数是十进制的,需要先判断是不是素数,然后按照给定进制转化成字符串后进行翻转,最后再转化为十进制并判断是否为素数. #include ...

  10. 模块化CommonJs规范 part1

    CommonJS规范 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 1.概述 Node 应用由模块组成,采用 CommonJS 模块规范. 每个文件就是一个模块, ...