gpt4 book ai didi

python - 如何修复签名中 Tensorflow 1.14.0rc 中的 'strided slice assignment are not compatible with expected types'?

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:27 26 4
gpt4 key购买 nike

我正在尝试在tensorflow 1.14.0中实现滑动DFT算法并使用tf.function,这样我就不必太担心控制流,但是我遇到了问题。当我尝试将变量的一个元素分配给该变量中的另一个元素时,我收到有关跨步切片分配中的不兼容类型的错误。

我尝试过使用 tf.scatter update、tf allocate 以及仅使用典型的切片分配,但是这些都不起作用。


@tf.function
def sdft_func(self,input_tensor):
for i in range(self.N_t):
#retrieving variables so that I have direct access to it
#instead of getting access to the read tensor
_, _, self.in_s = self.get_variables()
last = self.in_s[self.N_t-1]
for j in range(self.N_t,0,-1):
_, _, self.in_s = self.get_variables()
val = self.in_s[j-1]
#The line below gives the error
self.in_s = self.in_s[j].assign(val)
print(self.in_s)

我收到的错误如下:

TypeError: In op 'strided_slice_1/_assign', input types ([tf.complex64, tf.int32, tf.int32, tf.int32, tf.complex64]) are not compatible with expected types ([tf.complex64_ref, tf.int32, tf.int32, tf.int32, tf.complex64])

提前谢谢您!

最佳答案

看来我缩小了问题范围,因为它与尝试在 tf.function 函数内部设置 tf.complex64 变量有关。因此,为了克服这个问题,我简单地抽象了该操作,以便在 tf.function 函数之外完成变量设置。解决方法见下文:


def sdft_func(self,input_tensor):

@tf.function
def func(input_tensor,N_t,in_s,coeffs,freqs):
in_s = tf.identity(in_s)
coeffs = tf.identity(coeffs)
freqs = tf.identity(freqs)


for i in range(N_t):
last = in_s[self.N_t-1]

in_s = in_s[:-1]
new_val = tf.expand_dims(tf.complex(input_tensor[i],
tf.cast(0.0,dtype=tf.float32)),0)

in_s = tf.concat([new_val,in_s],axis=0)
delta = in_s[0] - last

freqs_2 = tf.TensorArray(tf.complex64,size=self.N)

for j in range(self.N_t):
freqs_2 = freqs_2.write(j,(freqs[j]+delta)*coeffs[j])
freqs = freqs_2.stack()
freqs.set_shape([self.N])

return freqs,in_s

new_freqs, new_in_s = func(input_tensor,self.N_t,
self.in_s,self.coeffs,self.freqs)

self.in_s = self.in_s.assign(new_in_s)
self.freqs = self.freqs.assign(new_freqs)

关于python - 如何修复签名中 Tensorflow 1.14.0rc 中的 'strided slice assignment are not compatible with expected types'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57547036/

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