小编fri*_*989的帖子

训练后量化权重的 keras 模型评估

我有一个在 keras 中训练的模型并保存为 .h5 文件。该模型使用 tensorflow 后端的单精度浮点值进行训练。现在我想实现一个在 Xilinx FPGA 上执行卷积运算的硬件加速器。但是,在我决定在 FPGA 上使用的定点位宽之前,我需要通过将权重量化为 8 位或 16 位数字来评估模型的准确性。我遇到了tensorflow quantise,但我不确定如何从每一层获取权重,对其进行量化并将其存储在 numpy 数组列表中。在所有层都量化后,我想将模型的权重设置为新形成的量化权重。有人可以帮我做这个吗?

这是我迄今为止尝试将精度从 float32 降低到 float16 的方法。请让我知道这是否是正确的方法。

for i in range(len(w_orginal)):
temp_shape = w_orginal[i].shape
print('Shape of index: '+ str(i)+ 'array is :')
print(temp_shape)
temp_array = w_orginal[i]
temp_array_flat = w_orginal[i].flatten()
for j in range(len(temp_array)):
    temp_array_flat[j] = temp_array_flat[j].astype(np.float16)

temp_array_flat = temp_array_flat.reshape(temp_shape)
w_fp_16_test.append(temp_array_flat)
Run Code Online (Sandbox Code Playgroud)

python fpga quantization keras tensorflow

5
推荐指数
1
解决办法
1115
查看次数

标签 统计

fpga ×1

keras ×1

python ×1

quantization ×1

tensorflow ×1