huanghao / learning-tensorflow

0 stars 0 forks source link

修改目标函数适应更多的数字 #11

Open huanghao opened 7 years ago

huanghao commented 7 years ago

ICLR14: I Goodfellow: Multi-digit Number Recognition from Street View Imagery using ConvNets

https://www.youtube.com/watch?v=vGPI_JvLoN0

这个文章使用了SVHN数据集,通过一个网络,识别出最多包含5个数字的房屋号码。通过一个特殊的目标函数,不但给出数字长度L,还给出整个数字序列,并且数据集比验证码更复杂。

huanghao commented 7 years ago

https://github.com/huanghao/learning-tensorflow/blob/master/notes/readings/multi-digit_number_recognition.ipynb

这里有paper的一部分翻译。

huanghao commented 7 years ago

实现上有两个注意的地方:

1)网络结构,前面是conv layers + fc layers,上层再分成几个独立的分类器,例如论文里的6个,1个长度预测加5个数字预测。 论文里的6个分类器,1个7维的L(代表长度的7中情况),5个10维的Si(5个数字,每个0-9)。 可以看成6个输出,也可以看成是一个57维的输出。这两种形式是一样的。把神经元的连接图画出来就能见到。最后一层需要4096 (7 + 5 10) 个参数。

2)loss函数的写法。论文中说最大化P(S|X) = P(L|X) P(S1|X) ... P(S5|X) 这个函数。这个函数里需要包含ground truth和prediction。举个例子。 真值为序列“175”,那这个函数应该返回

s, l = "175", 3
loss(S, L, s, l) = log L[3] + log S[1] + logS[2] + logS[3]

这个函数计算的部分可能包含条件