Closed Stu-Yang closed 1 year ago
@Stu-Yang Sorry for my poor English, 我就直接用中文说了。 这是由于二值网络的训练模式导致的。在训练二值网络时,我们需要保存原始浮点型的参数,在每一次推断的时候对参数二值化。你看到的h5文件中保存的正是未经二值化的初始权重。 在bnnModels.py的第114行里,model owner对这些浮点型参数进行了二值化。 希望本回答能解决你的问题。
如果还有疑问欢迎reopen issue
这是由于二值网络的训练模式导致的。
想问一下,这里的训练模式是指什么?我所理解的训练好之后的二值神经网络模型存储到.h5文件后,存储的参数应该为+1或者-1(或者0或者1),因为如果不是这样的话,训练好之后的二值神经网络模型大小将没有Binarized neural networks: Training deep neural networks with weights and activations constrained to+ 1 or-1所说的那样相比于全精度神经网络模型大小减小64倍的存储量。
训练模式就是指 “在训练二值网络时,我们需要保存原始浮点型的参数,在每一次推断的时候对参数二值化。”
的确,为了方便debug,并证明提供的二值网络模型的真实性,我保存了二值网络的原始浮点参数,这导致保存的h5文件大小与实际的浮点模型大小相当,没有达到您引用的论文中那种接近缩小64倍的效果。如果想实现这种优化,只需将model owner二值化的步骤移到明文模型训练的代码里,并在保存和加载模型文件时做一些细节处理就可以了,这些应该不难做到。
明白了,十分感谢你的解答!
Hi, @Wixee I am reading SecureBiNN and studying the code. I wonder whether the weights of model (e.g. the weights in Network-C.h5) are +1 or -1?
Before I ran the code according to SecureBiNN - How to run this project ?, I added some
print(...)
in main.pyto get the structures and weights of model:
I would like to know why the weight in Network-C aren't +1 or -1 ?