我有一个在Keras中训练的模型,保存为.h5文件。该模型使用TensorFlow后端进行单精度浮点值训练。现在我想实现一个硬件加速器,在Xilinx FPGA上执行卷积操作。但是,在决定在FPGA上使用的定点位宽之前,我需要通过将权重量化为8或16位数字来评估模型准确性。我看到了tensorflow quantise,但不确定如何处理每个层的权重、量化并存储在numpy数组列表中。在所有层都被量化后,我想将模型的权重设置为新形成的量化权重。请问是否能帮助我完成这个过程?
以下是我尝试将精度从float32降至float16的方法,请告知是否正确。
以下是我尝试将精度从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)