-
Notifications
You must be signed in to change notification settings - Fork 501
Description
I’m working with a ResNet model with 10,192 parameters. When I compile it with HLS4ML in the usual way, the BRAM usage is heavily exceeded. To address this, I tried switching to the BRAM implementation and used the BramFactor parameter. However, when I compile with this setup, I get a strange error. (Without setting BramFactor, I did not get the error.)I’d really appreciate your help in figuring out what’s going wrong.
Error
Details
import hls4ml
from hls4ml.utils.config import config_from_keras_model
hls_config = config_from_keras_model(optimized_model, granularity='Model')
hls_config['Model']['Strategy'] = 'Resource'
hls_config['Model']["BramFactor"] = 2000
hls_config['Model']['ReuseFactor'] = 36
hls_model = hls4ml.converters.convert_from_keras_model(
optimized_model, hls_config=hls_config, output_dir='k_ResNet_rml',
backend='VivadoAccelerator', part='xczu7ev-ffvc1156-2-e', io_type='io_stream')
hls_model.compile()
Model
rf_input (InputLayer) [(None, 32, 32, 2)] 0
conv2d (Conv2D) (None, 32, 32, 16) 288
batch_normalization (BatchNorm (None, 32, 32, 16) 64
alization)
activation (Activation) (None, 32, 32, 16) 0
batch_normalization_1 (BatchNo (None, 32, 32, 16) 64
rmalization)
activation_1 (Activation) (None, 32, 32, 16) 0
conv2d_1 (Conv2D) (None, 32, 32, 4) 576
batch_normalization_2 (BatchNo (None, 32, 32, 4) 16
rmalization)
activation_2 (Activation) (None, 32, 32, 4) 0
conv2d_2 (Conv2D) (None, 32, 32, 4) 144
batch_normalization_3 (BatchNo (None, 32, 32, 4) 16
rmalization)
activation_3 (Activation) (None, 32, 32, 4) 0
conv2d_3 (Conv2D) (None, 32, 32, 16) 576
add (Add) (None, 32, 32, 16) 0
batch_normalization_4 (BatchNo (None, 32, 32, 16) 64
rmalization)
activation_4 (Activation) (None, 32, 32, 16) 0
conv2d_4 (Conv2D) (None, 32, 32, 4) 576
batch_normalization_5 (BatchNo (None, 32, 32, 4) 16
rmalization)
activation_5 (Activation) (None, 32, 32, 4) 0
conv2d_5 (Conv2D) (None, 32, 32, 4) 144
batch_normalization_6 (BatchNo (None, 32, 32, 4) 16
rmalization)
activation_6 (Activation) (None, 32, 32, 4) 0
conv2d_6 (Conv2D) (None, 32, 32, 16) 576
add_1 (Add) (None, 32, 32, 16) 0
batch_normalization_7 (BatchNo (None, 32, 32, 16) 64
rmalization)
activation_7 (Activation) (None, 32, 32, 16) 0
conv2d_7 (Conv2D) (None, 32, 32, 4) 576
batch_normalization_8 (BatchNo (None, 32, 32, 4) 16
rmalization)
activation_8 (Activation) (None, 32, 32, 4) 0
conv2d_8 (Conv2D) (None, 32, 32, 4) 144
batch_normalization_9 (BatchNo (None, 32, 32, 4) 16
rmalization)
activation_9 (Activation) (None, 32, 32, 4) 0
conv2d_9 (Conv2D) (None, 32, 32, 16) 576
add_2 (Add) (None, 32, 32, 16) 0
conv2d_10 (Conv2D) (None, 32, 32, 16) 2304
batch_normalization_10 (BatchN (None, 32, 32, 16) 64
ormalization)
activation_10 (Activation) (None, 32, 32, 16) 0
global_average_pooling2d (Glob (None, 16) 0
alAveragePooling2D)
flatten (Flatten) (None, 16) 0 '
dense (Dense) (None, 64) 1024
dropout (Dropout) (None, 64) 0
dense_1 (Dense) (None, 32) 2048
dropout_1 (Dropout) (None, 32) 0
dense_2 (Dense) (None, 7) 224
==================================================================================================
Total params: 10,192
Trainable params: 9,984
Non-trainable params: 208