TensorFlow 占位符依赖于其他占位符

Posted

技术标签:

【中文标题】TensorFlow 占位符依赖于其他占位符【英文标题】:Tesorflow placeholder depends on other placeholder 【发布时间】:2017-10-12 14:40:10 【问题描述】:

我有一个占位符,其形状取决于另一个占位符。 在占位符初始化期间如何连接它们?

nUsers = tf.placeholder(tf.float32, [None, 1])
p = tf.placeholder(tf.float32, [None, 10 , ???] )

...在 ???我需要将 nUsers 中存在的数字给定的大小用于该批次的该项目。

【问题讨论】:

【参考方案1】:

您可以使用x.get_shape()(check the difference 在tf.shape(x) 之间)轻松获得张量的形状。所以你需要这样的东西:

import tensorflow as tf
import numpy as np
nUsers = tf.placeholder(tf.float32, [None, 1])
p = tf.placeholder(tf.float32, [None, 10 , nUsers.get_shape()[0]])

with tf.Session() as sess:
    print sess.run(p, nUsers: np.ones((2, 1)), p: np.ones((3, 10, 2)))

【讨论】:

在这段代码中,p 的形状由 nUser 的形状决定。但是如果 p 的形状是由 nUsers 的值决定的呢? @D.Giunchi 这将是一个完全不同的问题,有不同的答案。同样在该问题中,您需要指定如何在此处使用张量的值。 但是如果你检查我原来的问题,有人提到我需要来自 nUsers 的值,而不是用于确定另一个形状的形状。 nUsers 基本上是一个数字,在每批中我都有一个向量。对于批次的每个条目,我都有许多执行特定任务的用户,我使用这个数字来确定另一个占位符的大小。我继续尝试使用 None (因为它会有所不同),但我遇到了其他问题,让我认为我应该考虑使用恒定大小的占位符。所以我的解决方案是填充第二个数组并考虑它的恒定大小。 @D.Giunchi 我正在寻找和你一样的人。你解决了这个问题吗?可以分享一下解决方法吗?

以上是关于TensorFlow 占位符依赖于其他占位符的主要内容,如果未能解决你的问题,请参考以下文章

尝试填充占位符时出现Tensorflow错误

Keras 输入层和 TensorFlow 占位符之间的区别

馈送占位符时的TensorFlow InvalidArgumentError

TensorFlow,“‘模块’对象没有属性‘占位符’”

Tensorflow:用 tf.Variable 替换/提供图形的占位符?

Tensorflow签名输出占位符