This PR addresses https://github.com/fastmachinelearning/hls4ml/issues/1074 and implements the passing of initial values for the hidden and cell states in GRU and LSTM models, which is supported in pytorch. This first version implements this only for the pytorch parser, but it should be able to be extended it for keras and other parsers.
I have tested this for Vivado, Vitis, and Quartus. I don't have access to Catapult or oneAPI at the moment, so I haven't implemented this fort those backends.
Note that this currently only works in io_parallel. In io_stream I was having some conceptual issues and was unsure if I should treat these initial states are streamed inputs or not. Might be good enough for now and I can revisit io_stream if there are any suggestions how to tackle that.
Type of change
[x] Bug fix (non-breaking change that fixes an issue)
[x] New feature (non-breaking change which adds functionality)
Tests
Tested in both standalone scripts and also the pytests to ensure that model parsing and evaluation work with and without passing these optional tensors.
This PR addresses https://github.com/fastmachinelearning/hls4ml/issues/1074 and implements the passing of initial values for the hidden and cell states in GRU and LSTM models, which is supported in pytorch. This first version implements this only for the pytorch parser, but it should be able to be extended it for keras and other parsers.
I have tested this for Vivado, Vitis, and Quartus. I don't have access to Catapult or oneAPI at the moment, so I haven't implemented this fort those backends.
Note that this currently only works in
io_parallel
. Inio_stream
I was having some conceptual issues and was unsure if I should treat these initial states are streamed inputs or not. Might be good enough for now and I can revisitio_stream
if there are any suggestions how to tackle that.Type of change
Tests
Tested in both standalone scripts and also the pytests to ensure that model parsing and evaluation work with and without passing these optional tensors.
Checklist
pre-commit
on the files I edited or added.