tensorflow实现sphereFace网络(20层CNN)
#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)的更多相关文章
- Deeplearning 两层cnn卷积网络详解
https://blog.csdn.net/u013203733/article/details/79074452 转载地址: https://www.cnblogs.com/sunshineatno ...
- TensorFlow 入门之手写识别CNN 三
TensorFlow 入门之手写识别CNN 三 MNIST 卷积神经网络 Fly 多层卷积网络 多层卷积网络的基本理论 构建一个多层卷积网络 权值初始化 卷积和池化 第一层卷积 第二层卷积 密集层连接 ...
- 3层-CNN卷积神经网络预测MNIST数字
3层-CNN卷积神经网络预测MNIST数字 本文创建一个简单的三层卷积网络来预测 MNIST 数字.这个深层网络由两个带有 ReLU 和 maxpool 的卷积层以及两个全连接层组成. MNIST 由 ...
- [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解
技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解 http://www.52im.net/thread-1309-1-1.html 本文来自腾讯资深研发工程师罗成的技术分享, ...
- 【Deep Learning】两层CNN的MATLAB实现
想自己动手写一个CNN很久了,论文和代码之间的差距有一个银河系那么大. 在实现两层的CNN之前,首先实现了UFLDL中与CNN有关的作业.然后参考它的代码搭建了一个一层的CNN.最后实现了一个两层的C ...
- TensorFlow创建DeepDream网络
TensorFlow创建DeepDream网络 Google 于 2014 年在 ImageNet 大型视觉识别竞赛(ILSVRC)训练了一个神经网络,并于 2015 年 7 月开放源代码. 该网络学 ...
- ASP.NET知识总结(1.网络传输层)
1.网络传输层 1应用层(HTTP.FTP.SMTP)报文Message 2传输层(TCP.UDP)报文段Segment,为运行在不同主机上的应用程序进程间提供数据 传输服务.通过套接字(Socket ...
- OSI/RM网络7层体系
转自OSI/RM网络7层体系 1 物理层 这是整个OSI参考模型的最低层,它的任务就是提供网络的物理连接.所以,物理层是建立在物理介质上(而不是逻辑上的协议和会话),它提供的是机械和电气接口.主要包括 ...
- OSI 网络七层模型(笔记)
一直以来我们都在使用着互联网,每天聊着qq,上着淘宝,但是却不了解怎么运行的呢,充满了好奇.今天同过了解来总结一下OSI网络七层模型: 上一张图 OSI (open system interconne ...
随机推荐
- bzoj 4236JOIOJI
一开始忘掉特殊情况也是蛋疼2333(有一直到头的.mp[0][0]是要特判的) 做法也就是找mp[i][j]相同的东西.(貌似可以写成线性方程组(z=x+A,z=y+B)过这个的就是相等(可以先从2维 ...
- Eclipse 快速打开文件所在的本地目录
目前收集到两种方法: 1.快捷键:Ctrl+Shift+W 2.利用Eclipse的External Tools设置快捷方式 第二种方法步骤: a.Run->External Tools-> ...
- UVA 11235 RMQ算法
上次的湘潭赛的C题,用线段树敲了下还是WA,不知道为何,我已经注意了处理相同数据,然后他们当时用的RMQ. 所以学了下RMQ,感觉算法思想是一样的,RMQ用了DP或者是递推,由单个数到2^k往上推,虽 ...
- P1426 小鱼会有危险吗
题解: 在测试数据里有一个是临界值问题,探测范围是闭区间 #include<stdio.h>int main(){ double s,x; //注意:此 ...
- 阿里P7Java最全面试296题:阿里天猫、蚂蚁金服含答案文档解析
[阿里天猫.蚂蚁.钉钉面试专题题目加答案] 不会做别着急:文末有答案以及视频讲解,架构师资料 1. junit用法,before,beforeClass,after, afterClass的执行顺序 ...
- 建立更可靠的OOP程序-类和成员的访问控制
1. public 成员(公共成员) (1)使用this 关键字的类的成员允许在任何地方被访问. (2)使用 prototype 定义的属性和方法都是公共成员. 这些属性和方法可以在外面任何地方被访问 ...
- Git--rebase合并提交
参考 https://blog.csdn.net/hj7jay/article/details/78809547 https://blog.csdn.net/yangcs2009/article/de ...
- Arduino串口的一些高级用法
1.配置串口通信数据位.校验位.停止位通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率.而使用Serial.begin(speed, config) ...
- Ubuntu 不插优盘无法启动
ubuntu安装成功后只能通过优盘启动 不插优盘就无法启动 启动后拔掉优盘没问题 难道动过优盘安装的 2013-06-16 20:01 提问者悬赏:5分 | 理电池 | 分类:电脑外接设备 | 浏览2 ...
- For循环的几个练习
1.括号里面只能放加或减,如果要使等式成立,括号里面应该放什么运算符12()34()56()78()9 = 59 2.蓝球弹起的高度篮球从10米高的地方落下,每次弹起的高度是原来的0.3倍,问弹跳10 ...