TensorFlow实现center loss
来源:互联网 发布:windows xp 修复 u盘 编辑:程序博客网 时间:2024/05/03 19:52
本文最新版发表在此处(http://tang.su/2017/04/TensorFlow-center-loss/)
Center loss是ECCV2016中一篇论文《A Discriminative Feature Learning Approach for Deep Face Recognition》提出来的概念,主要思想就是在softmax loss基础上额外加入一个正则项,让网络中每一类样本的特征向量都能够尽量聚在一起。
具体的原理推导等请参考论文,论文作者放出了Caffe实现,网上还能找到mxnet的实现,这里我放出一个TensorFlow版的实现及详细注释,代码很短,如下:
def get_center_loss(features, labels, alpha, num_classes): # alpha:中心的更新比例 # 获取特征长度 len_features = features.get_shape()[1] # 建立一个变量,存储每一类的中心,不训练 centers = tf.get_variable('centers', [num_classes, len_features], dtype=tf.float32, initializer=tf.constant_initializer(0), trainable=False) # 将特征reshape成一维 labels = tf.reshape(labels, [-1]) # 获取当前batch每个样本对应的中心 centers_batch = tf.gather(centers, labels) # 计算center loss的数值 loss = tf.nn.l2_loss(features - centers_batch) # 以下为更新中心的步骤 diff = centers_batch - features # 获取一个batch中同一样本出现的次数,这里需要理解论文中的更新公式 unique_label, unique_idx, unique_count = tf.unique_with_counts(labels) appear_times = tf.gather(unique_count, unique_idx) appear_times = tf.reshape(appear_times, [-1, 1]) diff = diff / tf.cast((1 + appear_times), tf.float32) diff = alpha * diff # 更新中心 centers = tf.scatter_sub(centers, labels, diff) return loss, centers
0 1
- TensorFlow实现center loss
- TensorFlow实现center loss
- tensorflow center loss代码注释
- Center Loss层
- caffe 训练center loss 太大
- 对Center loss的理解
- tensorflow计算Loss
- 损失函数改进之Center Loss
- tensorflow从变量-loss-optimizer
- center loss代码注释(caffe新添加层)
- ECCV16 Center Loss及其在人脸识别中的应用
- 采用center loss的caffe 人脸识别
- tensorflow的cross_entropy(loss)=nan问题
- TensorFlow损失函数(loss function)
- tensorflow 学习随记--最优化loss
- tensorflow 运行过程中loss出现 NaN
- TensorFlow损失函数(loss function) 2017-08-14 11:32 125人阅读 评论(0) 收藏 举报 分类: 深度学习及TensorFlow实现(10) 版权声明:
- triplet loss (原理 + 实现)
- 2017最新最有价值的Android视频教程(包括传智播客/最新黑马等视频教程)
- list删除元素
- 排序算法性能比较
- 【设计模式】—-(9)组合模式(结构型)
- 历届试题 PREV-34 矩阵翻硬币
- TensorFlow实现center loss
- 正则表达式
- 使用:target实现点击按钮切换图片的功能(纯CSS)
- C语言实现字符串拼接和字符串拷贝
- JAVA第二季项目实战———答答租车系统代码
- spoj 375 Query on a tree——(树链剖分orLCT动态树)
- 解决在Linuxmint18.1环境下fcitx无法显示候选框的问题
- 谷哥的小弟学前端(07)——CSS基础知识(5)
- 关于 js 中 this 的理解