У меня есть модель, обученная в keras и сохраненная как файл .h5. Модель обучается с использованием значений с плавающей запятой одинарной точности с бэкэнд тензорного потока. Теперь я хочу реализовать аппаратный ускоритель, который выполняет операцию свертки на ПЛИС Xilinx. Однако, прежде чем я выберу разрядность фиксированной точки, которая будет использоваться на ПЛИС, мне нужно оценить точность модели путем квантования весов до 8- или 16-разрядных чисел. Я наткнулся на квант тензорного потока, но я Не уверен, как я могу брать веса с каждого слоя, квантовать его и сохранять в списке массивов 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)