利用神经网络API(NNAPI)、Android实现了一个基于编解码结构的神经网络.
有5个编码器和5个解码器。第一个编码器的输入维为-> 1x160084,最后一个编码器的输出维为1x624。它需要6秒才能完成。每个编码器都包含两个卷积。
第一个解码器的输入维为-> 1x624,最后一个解码器的输出维为1X160084。它需要26秒才能完成。每个解码器都有卷积和转置卷积。
在解码器中,执行时间要慢得多。但两者的数据大小大致相同。为何会有这样的分别呢?我需要减少解码器的执行时间。我发现转置卷积的时间是最大的。
对于第一个转置卷积输入维数为(1x624x1024)输出维为(1x2500x512),核大小为(1x8x1024)。步长为4秒。这一转置卷积操作几乎需要5秒。
如果我们使用朴素的方法进行转置卷积,它将采取-> 1024 * 624 *8* 512 *2= 5234491392运算。因此它将在52秒内执行(如果1e8操作在1 S中执行)。因此,可能会有一些优化的NNAPI实现的转置卷积。
有没有办法看到NNAPI在转置卷积中的实现,以及如何进一步改进它?
发布于 2022-11-09 04:15:01
https://datascience.stackexchange.com/questions/114380
复制相似问题