gpt4 book ai didi

tensorflow theano.tensor.set_subtensor 等价物

转载 作者:行者123 更新时间:2023-12-04 02:25:27 24 4
gpt4 key购买 nike

我正在 keras 中实现一个操作,这样它就可以在 theano 和 tensorflow 后端工作。假设操作的输入是:

array([[ 0,  1,  2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]], dtype=int64)

那么它的输出应该是:
array([[ 0,  1,  2,  3,  4,  5],
[ 3, 4, 5, 0, 1, 2],
[ 6, 7, 8, 9, 10, 11],
[ 9, 10, 11, 6, 7, 8]], dtype=int64)

我的代码如下:
from keras import backend as K
def pairreshape(x,target_dim,input_shape):
x1, x2 = x[0::2,], x[1::2,]
x1_concate = K.concatenate((x1,x2), axis=target_dim)
x2_concate = K.concatenate((x2,x1), axis=target_dim)
if K.image_dim_ordering() == 'th':
import theano.tensor as T
x_new = T.repeat(x,2,axis=target_dim)
x_new = T.set_subtensor(x_new[0::2], x1_concate)
x_new = T.set_subtensor(x_new[1::2], x2_concate)
elif K.image_dim_ordering() == 'tf':
import tensorflow as tf
repeats = [1] * len(input_shape)
repeats[target_dim] = 2
x_new = tf.tile(x, repeats)
x_new[0::2] = x1_concate #TypeError: 'Tensor' object does not support item assignment
x_new[1::2] = x2_concate #TypeError: 'Tensor' object does not support item assignment

我已经通过 theano 成功实现了它,但是我无法弄清楚如何通过 tensorflow 分配张量。 tensorflow中tensor assignment的最后两行会报错。 tensorflow 中是否有 T.set_subtensor 等价物?或者你能推荐一个更好的操作实现吗?谢谢。

最佳答案

TensorFlow 张量是只读的。为了修改你需要使用变量和.assign的东西。 (= 不能在 Python 中被覆盖)

tensor = tf.Variable(tf.ones((3,3)))
sess.run(tf.initialize_all_variables())
sess.run(tensor[1:, 1:].assign(2*tensor[1:,1:]))
print(tensor.eval())

输出
[[ 1.  1.  1.]
[ 1. 2. 2.]
[ 1. 2. 2.]]

关于tensorflow theano.tensor.set_subtensor 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com