激活函数模块
理论可参考:
https://arxiv.org/ftp/arxiv/papers/2008/2008.02078.pdf
https://thedatabus.io/activation-function
HyperBolicTangent
计算一个FP32的tanh值。
1 |
|
UsingTheTanh模块
计算一堆数的tanh值,计算是串行的。
1 | module UsingTheTanh(x,clk,Output,resetExternal,FinishedTanh); |
HyperBolicTangent16模块
1 |
|
UsingTheTanh16模块
1 | module UsingTheTanh16(x,clk,Output,resetExternal,FinishedTanh); |
Softmax模块
平均池化
平均池化单元
即out=(a+b+c+d)*0.25
![](/2022/12/31/%E3%80%90FPGA%E3%80%91%E6%89%8B%E5%86%99%E6%95%B0%E5%AD%97%E8%AF%86%E5%88%AB3-%E5%B9%B3%E5%9D%87%E6%B1%A0%E5%8C%96%E5%92%8C%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0/1.png)
1 |
|
一层的平均池化
例化W/2*H/2个池化单元即可。比如28x28的图像做平均池化,需要14x14个平均池化单元。
![](/2022/12/31/%E3%80%90FPGA%E3%80%91%E6%89%8B%E5%86%99%E6%95%B0%E5%AD%97%E8%AF%86%E5%88%AB3-%E5%B9%B3%E5%9D%87%E6%B1%A0%E5%8C%96%E5%92%8C%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0/2.png)
1 |
|
多层的平均池化
对单层平均池化打拍和输出数据的重排(并转串),从而获得正确输出。
![](/2022/12/31/%E3%80%90FPGA%E3%80%91%E6%89%8B%E5%86%99%E6%95%B0%E5%AD%97%E8%AF%86%E5%88%AB3-%E5%B9%B3%E5%9D%87%E6%B1%A0%E5%8C%96%E5%92%8C%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0/3.png)
1 |
|