Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 以下代码是否可以在inTensorflow中实现?_Python_Tensorflow_Tensorflow2.0_Tensorflow Datasets - Fatal编程技术网

Python 以下代码是否可以在inTensorflow中实现?

Python 以下代码是否可以在inTensorflow中实现?,python,tensorflow,tensorflow2.0,tensorflow-datasets,Python,Tensorflow,Tensorflow2.0,Tensorflow Datasets,下面的代码是我试图在TensorFlow中实现的Matlab代码。 我想知道是否可以在TensorFlow的嵌套for循环中实现if-else A = [100;200;300;300;100;200;200;100;300;300]; B = unique(A); C = [4;5;6]; D = zeros(length(A),1); for i = 1:length(A) for j = 1:length(B) if A(i) == B(j)

下面的代码是我试图在TensorFlow中实现的Matlab代码。 我想知道是否可以在TensorFlow的嵌套for循环中实现if-else

A = [100;200;300;300;100;200;200;100;300;300];
B = unique(A);
C = [4;5;6];

D = zeros(length(A),1);
for i = 1:length(A)
    for j = 1:length(B)
        if A(i) == B(j)
            D(i) = D(i)+A(i)*C(j);
        else
            D(i) = D(i)+0;
        end
    end
end
让我们假设

A_tf = tf.placeholder(tf.float32, shape=[None, self.a.shape[1]])
c = tf.Variable(tf.ones([len(np.unique(self.a))]))
基于您的TensorFlow代码,我创建了下面的函数,希望它能够返回#输出'd'

def d_tensor(self,a,c): 
    val,idx = tf.unique(a) 
    val = tf.sort(val) 
    sh = tf.shape(val)[0] 
    one_hot_a = tf.one_hot(idx,depth=sh ,dtype = tf.float32)  
    d= tf.reduce_sum(one_hot_a*val*c, axis=-1) 
return d 
我得到以下错误:ValueError:尝试将“深度”转换为张量,但失败。错误:无法将未知维度转换为张量:?。
我不知道如何理解这个

首先,我试图理解您的代码,所以我只是用经典的python和

a=[100200300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300
b=已排序(集合(a))
c=[4,5,6]
d=[0]*len(a)
对于范围内的i(len(a)):
j=b.指数(a[i])
d[i]=d[i]+a[i]*c[j]
打印(“a”,a)
打印(“b”,b)
打印(“c”,c)
打印(“d”,d)
这给了我输出

a[100200300300100200200200100300]
b[100200300]
c[4,5,6]
d[400,1000,1800,1800,400,1000,1000,400,1800,1800]
然后我尝试在tensorflow中做同样的事情,我做到了

a=tf.convert_to_tensor([100200300300003001002002001300300])
b、 idx=tf.unique(a)
b=tf.sort(b)
c=tf。将_转换为_张量([4,5,6])
one_hot_a=tf.one_hot(idx,depth=b.shape[0],dtype=tf.int32)
减少总和(一个热轴=-1)
其输出相同:



也许你能给我们一些数据,让我们知道这是否真的是你所期望的?

我想知道是否有可能在TensorFlow的嵌套for循环中实现if-else。很可能是的。您应该首先尝试,如果遇到特定的技术问题,请提出一个问题。请看,。亲爱的帮助中心,我已经试过了,但不确定发生了什么,因为我对Tensorflow非常陌生。这就是为什么我从简单的Matlab实现开始,以确保我所要求的!我不确定这是如何解决我在评论中所写的问题的,我认为这一点仍然有效。亲爱的Maug,谢谢你的回复。我想我可能以错误的方式发布了这个问题。在我的问题中,'a'是形状(10,1)的占位符,c是形状的变量张量(在'a',1'中没有任何值),其中每一行都用1.0的值初始化。这两项在施工阶段定义。现在,在执行阶段,数据被馈送到“a”。在这个阶段,我想得到一个输出张量'd',如您在上面的代码片段中所示。我已经更新了我的代码。请调查一下。谢谢大家!@MitraLanka尝试将
sh=val.shape[0]
更改为
sh=tf.shape(val)[0]
。您可能需要将
one\u hot\u a=tf.one\u hot(idx,depth=sh,dtype=tf.int32)
更改为
one\u hot\u a=tf.one\u hot(idx,depth=sh,dtype=tf.float32)
我已经更新了代码并运行了它。现在,我收到了一个不同的错误。”形状必须为rank1,但对于输入形状[?,1]“唯一”为rank2这个错误对我来说没有意义,因为我正在将秩为1的“a”向量馈送给a_tf。你能告诉我哪里出了问题吗?