Tensorflow 根据条件修改一维张量

Tensorflow 根据条件修改一维张量,tensorflow,Tensorflow,我想对tensorflow中一维张量的每个元素应用一个条件,从而修改输入张量。例如,如果张量为: y_true=tf.变量([0.0,0.3,0.0,0.4,0.0,0.1,0.0,0.0]) 我想检查每个元素是否大于0.1。如果是,则该元素变为1else0。如何在tensorflow中做到这一点 到目前为止,我一直在尝试编写python函数,然后使用py_func在tensorflow中使用它,但它不起作用。见以下代码- y_true=tf.变量([0.0,0.3,0.0,0.4,0.0,0.

我想对tensorflow中一维张量的每个元素应用一个条件,从而修改输入张量。例如,如果张量为:

y_true=tf.变量([0.0,0.3,0.0,0.4,0.0,0.1,0.0,0.0])

我想检查每个元素是否大于
0.1
。如果是,则该元素变为
1
else
0
。如何在tensorflow中做到这一点

到目前为止,我一直在尝试编写python函数,然后使用
py_func
在tensorflow中使用它,但它不起作用。见以下代码-

y_true=tf.变量([0.0,0.3,0.0,0.4,0.0,0.1,0.0,0.0])
使用tf.Session()作为sess:
y=tf.py\u func(用阈值[y\u true],tf.float32对\u进行取整)
y、 eval()
def四舍五入,带四舍五入阈值(arr):
阈值=0.1
四舍五入=np.0(arr.shape[0])
对于范围内的i(arr.shape[0]):
如果arr[i]>=阈值:
四舍五入arr[i]=1
其他:
四舍五入arr[i]=0
返回四舍五入

是否可以在不编写任何python函数的情况下在tensorflow中执行此操作?

您可以执行以下操作:

将tensorflow导入为tf
y_true=tf.变量([0.0,0.3,0.0,0.4,0.0,0.1,0.0,0.0])
comp_op=tf.greater(y_true,0.1)#返回布尔张量
cast_op=tf.cast(comp_op,tf.int32)#将布尔张量转换为int32
使用tf.Session()作为sess:
sess.run(tf.global\u variables\u initializer())
打印(sess.run(cast_op))
打印:
[0 1 0 1 0 0 0 0]