Tensorflow:动态传递整数?

时间:2017-08-16 20:33:33

标签: python machine-learning tensorflow int placeholder

我试图使用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>.

有什么聪明的方法吗?

1 个答案:

答案 0 :(得分:0)

无法动态传递分区数。根据{{​​3}} tf.dynamic_partition期望python整数不是张量。这是因为tf.dynamic_partitition返回的列表中元素的数量需要静态知道。