Python 在tensorflow.placeholder上使用tensorflow.argmax

Python 在tensorflow.placeholder上使用tensorflow.argmax,python,tensorflow,Python,Tensorflow,为什么tf.reduce_sum()可以处理tf.placeholder而tf.argmax()不能,即使两者都接受一个张量作为输入并返回一个张量 以下代码正常工作: x=tf.placeholder(tf.float32,[10]) y=tf.减少总和(x) sess=tf.Session() session.run(y,{x:np.arange(10)}) 而这个(使用tf.argmax()代替)不: x=tf.placeholder(tf.float32,[10]) y=tf.argma

为什么
tf.reduce_sum()
可以处理
tf.placeholder
tf.argmax()
不能,即使两者都接受一个
张量作为输入并返回一个
张量

以下代码正常工作:

x=tf.placeholder(tf.float32,[10])
y=tf.减少总和(x)
sess=tf.Session()
session.run(y,{x:np.arange(10)})
而这个(使用
tf.argmax()
代替)不:

x=tf.placeholder(tf.float32,[10])
y=tf.argmax(x)
sess=tf.Session()
session.run(y,{x:np.arange(10)})
并返回以下错误(在
y=tf.argmax(x)
调用中):

回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/op_def_library.py”,第490行,在apply_op
首选类型(默认类型)
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第669行,在convert_to_tensor中
ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/constant_op.py”,第176行,在_constant_tensor_conversion_函数中
返回常量(v,dtype=dtype,name=name)
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/constant_op.py”,第165行,常量
tensor_util.make_tensor_proto(值,dtype=dtype,shape=shape,verify_shape=verify_shape))
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/tensor\u util.py”,第360行,make\u tensor\u proto
raise VALUERROR(“不支持无值”)
ValueError:不支持任何值。
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
argmax中的文件“/usr/lib/python3.6/site packages/tensorflow/python/ops/math_ops.py”,第249行
返回gen_math_ops.arg_max(输入、轴、名称)
文件“/usr/lib/python3.6/site packages/tensorflow/python/ops/gen_math_ops.py”,第168行,arg_max
名称=名称)
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/op_def_library.py”,第503行,在apply_op
as_ref=输入参数为.dtype.name
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第669行,在convert_to_tensor中
ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/constant_op.py”,第176行,在_constant_tensor_conversion_函数中
返回常量(v,dtype=dtype,name=name)
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/constant_op.py”,第165行,常量
tensor_util.make_tensor_proto(值,dtype=dtype,shape=shape,verify_shape=verify_shape))
文件“/usr/lib/python3.6/site packages/tensorflow/python/framework/tensor\u util.py”,第360行,make\u tensor\u proto
raise VALUERROR(“不支持无值”)
ValueError:不支持任何值。

这似乎是
tf.argmax
实现中的一个bug。使用
tf.argmax(x,axis=0)
作为临时解决方法。@keveman确实是这个问题。keveman。。谢谢你的评论,为什么不在回答部分加上呢?太完美了。
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 490, in apply_op
    preferred_dtype=default_dtype)
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 669, in convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 176, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 165, in constant
    tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape))
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/tensor_util.py", line 360, in make_tensor_proto
    raise ValueError("None values not supported.")
ValueError: None values not supported.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py", line 249, in argmax
    return gen_math_ops.arg_max(input, axis, name)
  File "/usr/lib/python3.6/site-packages/tensorflow/python/ops/gen_math_ops.py", line 168, in arg_max
    name=name)
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 503, in apply_op
    as_ref=input_arg.is_ref).dtype.name
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 669, in convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 176, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 165, in constant
    tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape))
  File "/usr/lib/python3.6/site-packages/tensorflow/python/framework/tensor_util.py", line 360, in make_tensor_proto
    raise ValueError("None values not supported.")
ValueError: None values not supported.