使用tf.scatter_nd使Keras'None'批处理大小不变

问题描述

我需要将池化模块输入到LSTM解码器,然后使用定制层构造该模块,并将编码器LSTM状态和Keras输入层作为输入。在此自定义层中,我需要分散对索引的更新:

updates: <tf.Tensor --- shape=(None,225,5,32) dtype=float32>
indices: <tf.Tensor --- shape=(None,225) dtype=int32>

使用tf.scatter_nd创建一个具有shape = {None,960,5,32)的张量,如下所示:

tf.scatter_nd(tf.expand_dims(indices,2),updates,shape=[None,960,32])

但是问题在于这样做会由于形状为nonetype而引起错误,并且我不想在其中声明batch_size,因为它是Keras层并且只能在学习过程中确定。在这种状态下,代码的工作版本是这样的:

tf.scatter_nd(tf.expand_dims(indices,shape=[960,32])
        >>> <tf.Tensor 'ScatterNd_4:0' shape=(960,32) dtype=float32>

已忽略输出中的batch_size。 有没有其他方法可以代替tf.scatter_nd来构建所需的输出张量,还是可以使其正常工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)