<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[thy_2014的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/thy_2014</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; thy_2014]]></copyright><item><title><![CDATA[Transformer的前世今生]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/123484863</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/123484863</guid><author>thy_2014</author><pubDate>Mon, 14 Mar 2022 18:33:44 +0800</pubDate><description><![CDATA[引言



Transformer在今天已经非常火了, 不管是NLP, 还是CV, 效果表现均很好. 那么这是Transformer到底是什么呢?

要把Transformer的来龙去脉讲清楚, 首先得从attention开始, attention刚出来时, 直接把Google翻译送上了人生巅峰.

在Transformer的出现之前的NLP相比CV来说并不那么活跃, 同时难度相对也比较大, 用得最多的也就是LSTM那一套, 不可能像CV那样模型可迁移性很强.

而Transformer的出现后, 简直把N]]></description><category></category></item><item><title><![CDATA[深度学习模型概要总结]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/82759117</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/82759117</guid><author>thy_2014</author><pubDate>Tue, 18 Sep 2018 15:59:12 +0800</pubDate><description><![CDATA[基础模型

我将用于分类的模型统称为基础模型，不仅仅可以用作分类，且可以做为其他任务的基础网络模型结构，用作预训练模型。
	包括: AlexNet, VGG, GoogleNet系列, ResNet, DarkNet系列等
	AlexNet
	可以说深度学习火起来的开创之作
		Group思想沿用至今
	
	VGG
	2014在ImageNet数据集上的亚军，那年冠军的是：GoogleNet，0....]]></description><category></category></item><item><title><![CDATA[深度解析DeepID2+之二进制化]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/80415836</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/80415836</guid><author>thy_2014</author><pubDate>Wed, 23 May 2018 10:24:21 +0800</pubDate><description><![CDATA[在看这篇论文时，一开始对二进制化的理解始终感觉不够透彻。看了很多别的关于DeepID2+的博客，都没有看到详细的解释。因此写这个博客，专门解析这一个点。毕竟是个人的观点，如果大家有更好的解释，欢迎讨论。&amp;gt; 为什么能够通过上面的两个统计结果把浮点值向量转换成二进制值向量呢？

&amp;gt; 这个统计的来源:
&amp;gt; - 实验数据量: 46,594条人脸图片数据
&amp;gt; - 假设人脸的特征表示向...]]></description><category></category></item><item><title><![CDATA[caffe和最新的tensorflow的依赖protobuf不兼容问题]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/73293423</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/73293423</guid><author>thy_2014</author><pubDate>Thu, 15 Jun 2017 16:45:08 +0800</pubDate><description><![CDATA[今天在使用caffe的画图工具时，大致出现如下错误：
AttributeError: 'google.protobuf.pyext._message.RepeatedScalarConta' object has no attribute '_values'


这是因为caffe不支持protobuf-3.0以上的版本
需要重新安装protobuf: pip install proto]]></description><category></category></item><item><title><![CDATA[caffe中的normalization实现]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52639324</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52639324</guid><author>thy_2014</author><pubDate>Fri, 23 Sep 2016 16:50:22 +0800</pubDate><description><![CDATA[首先得感谢某牛的：如何在caffe中增加Layer以及caffe中triplet loss layer的实现
所以接下来就按照这个牛的介绍，逐个往里面添加东西就好了。
构造设置函数这里就先忽略，直接进入前馈和反馈的实现。
原理介绍可以参照上一篇normalization的实现原理。
前馈的过程相对来说是比较简单的，代码如下：
template 
void NormalizationLay]]></description><category></category></item><item><title><![CDATA[normalization的实现原理]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52635896</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52635896</guid><author>thy_2014</author><pubDate>Fri, 23 Sep 2016 11:44:18 +0800</pubDate><description><![CDATA[我是在FaceNet的论文中看到这个东西的。
那么在其具体的实现原理是怎么样的呢？
归一化，的方式有很多，在那篇论文中，相当于做的是希望：每个点都映射到一个球面上。也就是希望：



为了达到这个目的，FaceNet是这样来做的：




所以在实现的时候，这就是前馈的过程。

那么反馈的时候，应该怎么做呢？
主要就是集中在：y_i对x_i的偏导上面；为了参数完整的反馈]]></description><category></category></item><item><title><![CDATA[linux下python调试]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52461247</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52461247</guid><author>thy_2014</author><pubDate>Wed, 07 Sep 2016 17:06:06 +0800</pubDate><description><![CDATA[之前一直在window下写python脚本，习惯用eclipse调试编辑，突然换到在linux环境下，有点不适应。。。
python有自带的pdb库，可以实现简单的调试功能，基本命令与gdb类似，不过功能不会有gdb那么强大，pdb主要支持多断点设置（可条件设置），代码级单步调试，查看堆栈信息，代码查看，post-mortem调试，
详细信息可以查看： 
http://docs.python]]></description><category></category></item><item><title><![CDATA[x64下vs2013 C++遍历目录下所有文件使用_findnext()调试时中断]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52291616</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52291616</guid><author>thy_2014</author><pubDate>Tue, 23 Aug 2016 15:55:56 +0800</pubDate><description><![CDATA[今天尝试在VS2013 win32控制台下写一个手写数字的机器学习程序，其中需要遍历某目录下的所有.txt文件，在网上查了大量方法，主流是这样的

#include 
#include 
#include 
#include 

using namespace std;

void getFiles(string path, vector& files, string postfix)
{]]></description><category></category></item><item><title><![CDATA[caffe源码阅读9-loss_layer.hpp+各cpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52163947</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52163947</guid><author>thy_2014</author><pubDate>Tue, 09 Aug 2016 16:39:49 +0800</pubDate><description><![CDATA[loss_layer：

AccuracyLayer类；
LossLayer类；
ContrastiveLossLayer类；
EuclideanLossLayer类；
HingeLossLayer类；
InfogainLossLayer类；
MultinomialLogisticLossLayer类；
SigmoidCrossEntropyLossLayer类；
Softma]]></description><category></category></item><item><title><![CDATA[caffe源码阅读-插曲-math_function.cpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52161320</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52161320</guid><author>thy_2014</author><pubDate>Tue, 09 Aug 2016 11:42:39 +0800</pubDate><description><![CDATA[来源：Caffe源码（一）：math_functions 分析


主要函数
math_function 定义了caffe 中用到的一些矩阵操作和数值计算的一些函数，这里以float类型为例做简单的分析
1. caffe_cpu_gemm 函数：
template<>
void caffe_cpu_gemmfloat>(const CBLAS_TRANSPOSE TransA,]]></description><category></category></item><item><title><![CDATA[caffe源码阅读8-common_layer.hpp+各cpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52043442</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52043442</guid><author>thy_2014</author><pubDate>Wed, 27 Jul 2016 15:59:33 +0800</pubDate><description><![CDATA[common_layer：

ArgMaxLayer类；
ConcatLayer类：
EltwiseLayer类；
FlattenLayer类；
InnerProductLayer类；
MVNLayer类；
SilenceLayer类；
SoftmaxLayer类，CuDNNSoftmaxLayer类；
SplitLayer类；
SliceLayer类。

呃，貌似就晓得]]></description><category></category></item><item><title><![CDATA[caffe源码阅读7-neuron_layers.hpp+各cpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/52023476</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/52023476</guid><author>thy_2014</author><pubDate>Mon, 25 Jul 2016 16:04:00 +0800</pubDate><description><![CDATA[neuron_layers.hpp：

NeuronLayer类
AbsValLayer类
BNLLLayer类
DropoutLayer类
PowerLayer类
ReLULayer类，CuDNNReLULayer类
SigmoidLayer类，CuDNNSigmoidLayer类
TanHLayer类，CuDNNTanHLayer类
ThresholdLayer类

这]]></description><category></category></item><item><title><![CDATA[caffe源码阅读6-vision_layers.hpp+各cpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51954513</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51954513</guid><author>thy_2014</author><pubDate>Tue, 19 Jul 2016 16:20:04 +0800</pubDate><description><![CDATA[vision_layers.hpp：

ConvolutionLayer类，CuDNNConvolutionLayer类；
Im2colLayer类；
LRNLayer类；
PoolingLayer类，CuDNNPoolingLayer类。

在这个文件中一共包含了上面的4种层。因为在卷积的时候，caffe为了加速处理，使用了小技巧im2col，所以我们先来看看im2colLayer]]></description><category></category></item><item><title><![CDATA[caffe源码阅读5-各种layer概述]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51954099</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51954099</guid><author>thy_2014</author><pubDate>Tue, 19 Jul 2016 11:36:35 +0800</pubDate><description><![CDATA[工厂模式：一个工厂可以生产N种产品，那么就需要N种磨具。

因为从来没有玩过设计模式，而layer是采用工厂模式的，就临时看了一下，大概可以用上面的那一句话来描述吧。
基本可以说caffe中的所有层都是继承了layer类的，那么在caffe中，一共有哪些层呢？可以在caffe.proto中看到：
  enum LayerType {
    // "NONE" layer type is ]]></description><category></category></item><item><title><![CDATA[caffe源码阅读4-layer.hpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51943159</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51943159</guid><author>thy_2014</author><pubDate>Mon, 18 Jul 2016 18:13:46 +0800</pubDate><description><![CDATA[An interface for the units of computation which can be composed into a Net.

Layer&s must implement a Forward function, in which they take their input (bottom) Blob&s (if any) and compute their outp]]></description><category></category></item><item><title><![CDATA[caffe源码阅读3-blob.cpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51941854</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51941854</guid><author>thy_2014</author><pubDate>Mon, 18 Jul 2016 16:06:54 +0800</pubDate><description><![CDATA[1 第一个方法：Reshape()
template 
void Blob::Reshape(const int num, const int channels, const int height,
    const int width) {
  CHECK_GE(num, 0);
  CHECK_GE(channels, 0);
  CHECK_GE(height, 0);
  CHECK_]]></description><category></category></item><item><title><![CDATA[caffe源码阅读2-syncedmem.hpp+.cpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51919678</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51919678</guid><author>thy_2014</author><pubDate>Mon, 18 Jul 2016 10:32:35 +0800</pubDate><description><![CDATA[因为在看Blob.hpp的时候，有一个东西不好理解，里面最重要的两个东西data, diff是定义成：
  shared_ptr data_;
  shared_ptr diff_;
shared_ptr也就是智能指针，等涉及到其方法的时候再做一点说明。]]></description><category></category></item><item><title><![CDATA[caffe源码阅读1-blob.hpp]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51918686</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51918686</guid><author>thy_2014</author><pubDate>Fri, 15 Jul 2016 16:41:37 +0800</pubDate><description><![CDATA[其实网上已经有很多源码解读了，但我还是想自己看一遍。
呃，不得不承认，我连C语言的代码都写得不好，C++也从来没有怎么学过。
所以可能我看的方式和大家不太一样，当作自己的学习记录吧。
水平有限，如果您看到了有说得不对的地方，请大方的指出来，相互交流学习，:)。

应该基本可以公认的一点：基本每个类里面所有方法都是对自己的数据进行操作，而自己的数据通常也是私有类型的。
鉴于以上这一点，所]]></description><category></category></item><item><title><![CDATA[使用OpenCV进行批量图像缩放]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51766378</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51766378</guid><author>thy_2014</author><pubDate>Mon, 27 Jun 2016 09:47:36 +0800</pubDate><description><![CDATA[问题是这样子的，有好多个文件夹，希望对每个文件夹中的图像都缩放到同一个比例。
那么不可避免，需要读取每个文件夹中的图像名称：
void getFiles(string path, vector& files)
{
	//文件句柄  
	long   hFile = 0;
	//文件信息  
	struct _finddata_t fileinfo;
	string p;
	if ((hFile]]></description><category></category></item><item><title><![CDATA[提取caffe前馈的中间结果+逐层可视化]]></title><link>https://blog.youkuaiyun.com/thy_2014/article/details/51659300</link><guid>https://blog.youkuaiyun.com/thy_2014/article/details/51659300</guid><author>thy_2014</author><pubDate>Mon, 13 Jun 2016 17:56:45 +0800</pubDate><description><![CDATA[参考官方网址：http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb
当caffe训练出一个模型，想用这个模型进行分类参见：使用caffe训练好的模型进行分类
本文接着介绍如何在将caffe前馈时的中间结果显示出来。
以下提到的代码并不能单独使用，需要加上使用caff]]></description><category></category></item></channel></rss>