我试图使用tf的dynamic_partition,它是这样使用的:
tf.dynamic_partition(data=someTensor, partitions=lengthOfArticles, num_partitions=numPartitions, name="Partition_Data")
我希望num_partitions依赖于每个run()中的数据,所以我定义了一个占位符:
numPartitions = tf.placeholder(shape=None, dtype=tf.int32)
但是我收到了这个错误:
Traceback (most recent call last):
File "stackedSeq2Seq.py", line 123, in <module>
summedAttention = sumUp(eout.attention_values)
File "stackedSeq2Seq.py", line 66, in sumUp
partitioned = tf.dynamic_partition(data=someTensor, partitions=lengthOfArticles, num_partitions=numPartitions, name="Partition_Data")
File "/Users/akilesh/anaconda3/lib/python3.4/site-packages/tensorflow/python/ops/gen_data_flow_ops.py", line 423, in dynamic_partition
num_partitions=num_partitions, name=name)
File "/Users/akilesh/anaconda3/lib/python3.4/site-packages/tensorflow/python/framework/op_def_library.py", line 684, in apply_op
attr_value.i = _MakeInt(value, key)
File "/Users/akilesh/anaconda3/lib/python3.4/site-packages/tensorflow/python/framework/op_def_library.py", line 156, in _MakeInt
(arg_name, repr(v)))
TypeError: Expected int for argument 'num_partitions' not <tf.Tensor 'Placeholder:0' shape=<unknown> dtype=int32>.
有什么聪明的方法吗?
答案 0 :(得分:0)
无法动态传递分区数。根据{{3}} tf.dynamic_partition
期望python整数不是张量。这是因为tf.dynamic_partitition
返回的列表中元素的数量需要静态知道。