Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试在Tensorflow中为同一数组变量赋值两次_Python_Arrays_Tensorflow_Variable Assignment - Fatal编程技术网

Python 尝试在Tensorflow中为同一数组变量赋值两次

Python 尝试在Tensorflow中为同一数组变量赋值两次,python,arrays,tensorflow,variable-assignment,Python,Arrays,Tensorflow,Variable Assignment,我在Tensorflow中创建了一个简单的数组变量,并试图找到一种方法来多次执行赋值。我知道为了在TF中完成作业,您需要使用TF.assign函数。问题是它返回的是“切片类型”,而不是变量类型 代码示例: a = [-1.2, -5, 30.0, -7.5, 0.75] v = tf.get_variable("v", shape=[5], initializer=tf.constant_initializer(a)) s = tf.Session() c = c[0].assign(55) #

我在Tensorflow中创建了一个简单的数组变量,并试图找到一种方法来多次执行赋值。我知道为了在TF中完成作业,您需要使用
TF.assign
函数。问题是它返回的是“切片类型”,而不是变量类型

代码示例:

a = [-1.2, -5, 30.0, -7.5, 0.75]
v = tf.get_variable("v", shape=[5], initializer=tf.constant_initializer(a))
s = tf.Session()
c = c[0].assign(55) # Now c is not a regular variable anymore.
print(c)  # <tf.Tensor 'strided_slice/_assign:0' shape=(5,) dtype=float32_ref>
s.run(c)  # output: array([ 55.  ,  -5.  ,  30.  ,  -7.5 ,   0.75], dtype=float32)
c = c[0].assign(66)  # Trying to assign again to index 0 of array c
a=[-1.2,-5,30.0,-7.5,0.75]
v=tf.get_变量(“v”,shape=[5],初始值设定项=tf.constant_初始值设定项(a))
s=tf.Session()
c=c[0]。赋值(55)#现在c不再是正则变量。
印刷品(c)#
s、 运行(c)#输出:数组([55.,-5,30.,-7.5,0.75],数据类型=float32)
c=c[0]。分配(66)#尝试再次分配给数组c的索引0
对于最后一行,我得到以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File 
"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 714, in assign
raise ValueError("Sliced assignment is only supported for variables")
ValueError: Sliced assignment is only supported for variables
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件
“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/array_ops.py”,分配中第714行
raise VALUERROR(“仅变量支持切片赋值”)
ValueError:仅变量支持切片赋值

我的问题是,在Tensorflow中,对一个变量进行多个赋值的正确方法是什么

只是不要为不同的操作重用相同的python变量
c

a=[-1.2,-5,30.0,-7.5,0.75]
c=tf.get_变量(“v”,shape=[5],初始值设定项=tf.constant_初始值设定项(a))
assign55=c[0]。分配(55)
assign66=c[0]。分配(66)
assign77=c[1]。assign(77)
使用tf.Session()作为sess:
sess.run(tf.global\u variables\u initializer())
sess.run(分配55)
打印(sess.run(c))#[55.-5.30.-7.50.75]
sess.run(分配66)
打印(sess.run(c))#[66.-5.30.-7.50.75]
sess.run(分配77)
打印(sess.run(c))#[66.77.30.-7.50.75]

当您想要更改数组中的不同索引时,这并不能解决问题。我希望能够在同一数组中分配多个位置。没有任何东西可以阻止您使用不同的索引。在您的示例中,我看不出有什么问题,如果我将'assign66'变量更改为:assign66=c[1]。assign(66),那么我将得到修改后数组的两个不同版本,一个是零索引处的值发生更改(assign55),另一个是第一个索引处的值发生更改(assign66)。我想要一个同时修改两个单元格的版本。@tomer.golany恐怕你错了,只修改了一个数组。我已将答案更新为使用差异指示抱歉,我的错误,您是对的:)。有没有一种方法可以在不运行所有赋值变量的情况下实现这一点。(仅运行c或一个赋值变量)谢谢!