shamangary / Keras-MNIST-center-loss-with-visualization

An implementation for mnist center loss training and visualization
75 stars 18 forks source link

single value ground truth labels as inputs 不是很理解 #2

Closed alyato closed 6 years ago

alyato commented 6 years ago

@shamangary Thanks.

input_target = Input(shape=(1,)) # single value ground truth labels as inputs

这一行代码不是很懂。 center_loss 公式中 是C,代码中你解释是为 single value ground truth labels as inputs C是聚类的中心,你是将single value ground truth label 作为初始值么? 谢谢

shamangary commented 6 years ago

因為每個feature彼此之間不知道是否屬於同一個class,所以他們需要groud-truth去辨別彼此是否要聚集再一起,這不是初始值的意思,C的初始值我沒有去動它。

alyato commented 6 years ago

谢谢。 可以理解为用ground-truth来对feature进行判别,是否属于同一个class的 即代码input_target = Input(shape=(1,)) 同时对第二行代码:centers = Embedding(10,2)(input_target),有一丝困惑。 我也看了Embedding和词向量的区别,可是不是很懂。但是就所写的代码而言,Embedding作为一个可训练矩阵,用以训练C。 您在网站上也介绍了,the shape of centers is (?,1,2),这个可以解释一下么?因为 the shape of ip1 is (?,2)`

ip1层有2个feature,而centers中也是2个,每个feature对应centers中的一个,即中心C

shamangary commented 6 years ago

基本上就是你的特徵和聚類中心勢必要有一樣的dim,所以才會有centers = x[1][:,0]讓他的dim也化為(?,2),如此才能跟ip1做相減的動作。

至於Embedding我個人把它想成一個table,有10個dim為2的center疊在一起,你輸入某個groud-truth label他就給你該label對應的center,一個查找的概念。

alyato commented 6 years ago

谢谢。明白了。