python - 使用 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, 5, 32])
但问题是这样做会由于 NoneType 的形状而产生错误,我不想在其中声明batch_size
它,因为它是 Keras 层并且仅在学习过程中是确定的。在这种状态下,代码的工作版本是这样的:
tf.scatter_nd(tf.expand_dims(indices, 2), updates, shape=[960, 5, 32])
>>> <tf.Tensor 'ScatterNd_4:0' shape=(960, 5, 32) dtype=float32>
忽略了输出中的 batch_size。是否有任何替代方法来构造所需的输出张量,而不是tf.scatter_nd
或有一种方法可以使其正常工作?
解决方案
推荐阅读
- kubernetes - Kubernetes:在工作 pod 的端点上拒绝连接
- docker - 无法从 Shiny-docker 应用程序连接到 MySql
- postgresql - postgres 通过文本变量访问 RECORD 类型变量中的字段
- python - 如何在 csv 文件中用希腊 leeter 写符号 gamma
- c# - 从带有等待的 linq 语句中选择
- java - 在服务类中获取 Spring ThreadPoolExecutor
- mesos - 成功连接后无法连接到 Mesos 浏览器消息
- node.js - Socket.io:检查每个事件或连接的身份验证
- dafny - 达芙妮。另一种调用情况可能违反上下文的修改子句
- excel - 如何使用 VBA 关闭 SAP 弹出窗口?