繁体   English   中英

'Tensor' object 不支持item赋值

[英]'Tensor' object does not support item assignment

from keras import backend as K
def TSNR(source_input,transformer):
        M=(source_input+transformer)/2
        std1=(source_input-M)**2
        std2=(transformer-M)**2
        std=K.sqrt((std1+std2)/2)
        f=(M/std)

>         f[f >1000000]=0

        final= K.average(f)
        return final

model.compile(optimizer='Adam', loss=losses, loss_weights=loss_weights, metrics=[TSNR])
model.fit(train_generator,
          epochs=nb_epochs,
          steps_per_epoch=steps_per_epoch,
          verbose=2,
          callbacks=[checkpoint],
          validation_data=val_generator(data_dir,1,1584,.3)
                    );
TypeError: in user code:

File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1021, in train_function  *
    return step_function(self, iterator)
File "<ipython-input-25-75c8cc34142e>", line 8, in TSNR  *
    f[f >1000000]=0

TypeError: 'UnliftedInitializerVariable' object does not support item assignment

你好,我尝试为 my.network 编写 tSNR 指标,但我遇到了这个问题。 在这种情况下如何解决分配问题? 我试图更改“f”变量中大于特定数字的值。

如果这是关于根据条件为张量分配值的那条线,那么可以通过多种方式完成。

import tensorflow as tf

aa = tf.Variable(tf.zeros([10, 4]))
tensor = tf.constant(10,shape=(4,3))
aa[0:4, 1:4 ].assign(tf.ones_like(tensor, dtype=tf.float32))
print(aa)

#In your code this example should work
aa.assign(tf.where(aa>0,aa,9))
print(aa)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM