Python PyTorch中的代码是做什么的?我如何用tensorflow表达它

Python PyTorch中的代码是做什么的?我如何用tensorflow表达它,python,tensorflow,machine-learning,keras,pytorch,Python,Tensorflow,Machine Learning,Keras,Pytorch,我发现一个代码可以解决我的问题,如下所示: (self.conv_diag(input_tensor.diagonal(dim1=2, dim2=3))).diag_embed(dim1=2, dim2=3) 而self.conv\u diag是我以前定义的一个层 据我所知,它在第二和第三维度中提取子传感器的对角线,将其放入层中,构造一个新的张量,填充零,并用我的层计算的新值替换其第二和第三维度 我发现提取对角线的方法是 tf.math.reduce_diag(input_tensor) 但

我发现一个代码可以解决我的问题,如下所示:

(self.conv_diag(input_tensor.diagonal(dim1=2, dim2=3))).diag_embed(dim1=2, dim2=3)
self.conv\u diag
是我以前定义的一个层

据我所知,它在第二和第三维度中提取子传感器的对角线,将其放入层中,构造一个新的张量,填充零,并用我的层计算的新值替换其第二和第三维度

我发现提取对角线的方法是

tf.math.reduce_diag(input_tensor)
但是我不能选择轴,我还没有找到一个等价的函数来替换
torch.diag\u embed()

我如何用Tensorflow来表达呢?

可能就是您想要的:

tf.linalg.diag(
    diagonal, name='diag', k=0, num_rows=-1, num_cols=-1, padding_value=0,
    align='RIGHT_LEFT'
)
这可能就是你想要的:

tf.linalg.diag(
    diagonal, name='diag', k=0, num_rows=-1, num_cols=-1, padding_value=0,
    align='RIGHT_LEFT'
)