我想在中复制以下numpy
代码tensorflow
。例如,我想为0
所有先前具有值的张量索引分配a 1
。
a = np.array([1, 2, 3, 1])
a[a==1] = 0
# a should be [0, 2, 3, 0]
如果我在其中编写类似的代码,tensorflow
则会出现以下错误。
TypeError: 'Tensor' object does not support item assignment
方括号中的条件应为a[a<1] = 0
。
有没有一种方法可以实现这种“条件赋值”(因为缺少更好的名称)tensorflow
?
TensorFlow
API中提供了几种比较运算符。
但是,在直接操纵张量时,没有什么等效于简洁的NumPy语法。你必须要使用个人的comparison
,where
和assign
运营商执行相同的操作。
您的NumPy示例的等效代码是这样的:
import tensorflow as tf
a = tf.Variable( [1,2,3,1] )
start_op = tf.global_variables_initializer()
comparison = tf.equal( a, tf.constant( 1 ) )
conditional_assignment_op = a.assign( tf.where (comparison, tf.zeros_like(a), a) )
with tf.Session() as session:
# Equivalent to: a = np.array( [1, 2, 3, 1] )
session.run( start_op )
print( a.eval() )
# Equivalent to: a[a==1] = 0
session.run( conditional_assignment_op )
print( a.eval() )
# Output is:
# [1 2 3 1]
# [0 2 3 0]
打印语句当然是可选的,它们只是用来演示代码是否正确执行。
问题内容: 我的问题分为两个部分: 如何计算沿张量的特定轴的最大值?例如,如果我有 我想要类似的东西 我知道有a和a ,但是都没有沿单个张量的轴给出最大值。现在,我有一个解决方法: 但是它看起来并不理想。有一个更好的方法吗? 给定一个张量的索引,我如何使用这些索引索引到另一个张量?使用上面的示例,我该如何执行以下操作: y = tf.constant([[1,2,3], [6,5,4]) y_ =
问题内容: 由于我需要在使用Tensorflow训练模型之前为数据编写一些预处理程序,因此需要对进行一些修改。但是,我不知道如何像使用一样修改值。 最好的方法是可以直接修改。但是,在当前版本的Tensorflow中似乎不可能。另一种方法是改变到该进程,然后用改回来。 关键是如何更改为。 1):https : //www.tensorflow.org/versions/r0.8/api_docs/p
问题内容: 我是TensorFlow的新手。在阅读现有文档时,我发现该术语确实令人困惑。因此,我需要澄清以下问题: 和, vs. ,’张量’vs.之间是什么关系? 它们都是张量类型吗? 问题答案: TensorFlow没有一流的Tensor对象,这意味着在运行时执行的基础图中没有任何概念。相反,该图由相互连接的op节点组成,代表操作。操作分配内存的输出,这些都可以在端点上,等等,你可以认为这些端点
问题内容: Tensorflow中的图形对象具有一种称为“ get_tensor_by_name(name)”的方法。反正有没有得到有效张量名称的列表? 如果不是,那么有人从这里知道预训练模型inception-v3的有效名称吗?从他们的示例pool_3开始,它是一个有效的张量,但是所有这些列表都很好。我看了一下所提到的文件,其中一些层似乎与表1中的大小相对应,但并非全部。 问题答案: 本文没有准
分配张量时如何解决ResourceExhaustedError: OOM的问题? ResourceExhaustedError(回溯见上文):使用形状分配张量时OOM[10000,32,28,28] 我包含了几乎所有的代码 错误中引用的行是: 快跑。。在训练循环中 下面列出了我从调试器输出复制的更多错误(有更多行,但我认为这些是主要错误,其他错误是由此引起的…) tensorflow.python
问题内容: 将Tensorflow与Python绑定一起使用时,如何将张量转换为numpy数组? 问题答案: 急切执行默认情况下 处于启用状态,因此只需调用Tensor对象即可。 有关更多信息,请参见NumPy兼容性。值得注意的是(来自文档), Numpy数组可以与Tensor对象共享内存。 对一个的任何更改都可能反映在另一个上。 大胆强调我的。副本可以返回也可以不返回,这是基于数据是在CPU还是