python - map_fn 和 tf.keras.layers.Input
问题描述
我有一个输入,它由两个整数组成,开始和结束。我想生成一个包含从开始到结束的整数的张量。例如,给定 (2, 5) 作为输入,我想生成 (2,3,4,5) 这是我的尝试:
start_end_input = tf.keras.layers.Input(shape=(2,), dtype=tf.int32, name="start_end")
tf.map_fn(lambda row: tf.range(row[0], row[1]), start_end_input, dtype=(tf.int32, tf.int32))
我得到了这个:
self._tensor_array = [None for _ in range(size)]
TypeError: 'Tensor' object cannot be interpreted as an integer
任何想法?
谢谢。
解决方案
tf.ragged.range采用限制向量(以及可选的开始和步骤向量),并返回包含请求范围的RaggedTensor 。例如:
>>> tf.ragged.range([0, 5, 8], [3, 3, 12])
<tf.RaggedTensor [[0, 1, 2], [], [8, 9, 10, 11]]>
如果你想把它包装在 Keras 中,它看起来像这样:
>>> model = tf.keras.Sequential([
... tf.keras.layers.Input(shape=(2,), dtype=tf.int32, name="start_end"),
... tf.keras.layers.Lambda(lambda row: tf.ragged.range(row[:,0], row[:,1]))])
>>> model.predict([[1, 10], [5, 8], [2, 4]])
<tf.RaggedTensor [[1, 2, 3, 4, 5, 6, 7, 8, 9], [5, 6, 7], [2, 3]]>
推荐阅读
- r - 循环中的尺寸错误 -R
- c# - 抛出异常:Discord.Net.WebSocket.dll 中的“System.IO.FileNotFoundException”
- javascript - 如何在服务器中打开Word文档并进行修改?
- python - Python 使用 Pickle 从一个文件中导出和导入多个 Cookie
- javascript - CSS column-count 有效,但希望控制它打破列的位置
- google-cloud-platform - 错误 io.grpc.StatusRuntimeException:PERMISSION_DENIED
- python - Python Spacy NLP - TypeError: Argument 'string' has wrong type (expected unicode, got str)
- angular - 使用表单两次返回警告
- swift - 如何在共享视图中添加 UICollectionView?
- namespaces - 为什么我不能在 trait impl 块的匹配臂中使用 Self?