tensorflow 两个二阶单位Tensor的并矢积[闭]

5vf7fwbs  于 2023-03-19  发布在  其他
关注(0)|答案(2)|浏览(106)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question
我需要计算两个2阶恒等Tensor的并矢积。这应该会得到一个4阶Tensor。然而,这与4阶恒等式略有不同。
我需要用Python来计算这个。有人能帮忙吗?我不知道怎么计算,也不知道应该用什么。我知道怎么在纸上计算,但是我不能把它翻译成代码。
对我来说
I= [[1,0],[0,1]]

tez616oj

tez616oj1#

可以实现两个二阶Tensorabtf.expand_dims的并矢(外)积,如下所示

product = tf.expand_dims(tf.expand_dims(a, 0), 1) * tf.expand_dims(tf.expand_dims(b, 2), 3)

如果你只需要两个身份,tf.transpose的重新整形为4秩tf.eye应该更简单。

4xy9mtcn

4xy9mtcn2#

当你想从产品中创造身份时,这是可能的。
样本,创建一个相同的身份。

import tensorflow as tf

class MyDenseLayer(tf.keras.layers.Layer):
    def __init__(self, num_outputs):
        super(MyDenseLayer, self).__init__()
        self.num_outputs = num_outputs
        
    def build(self, input_shape):
        min_size_init = tf.keras.initializers.RandomUniform(minval=10, maxval=10, seed=None)
        self.kernel = self.add_weight(shape=[int(input_shape[-1]),
                        self.num_outputs],
                        initializer = min_size_init,
                        trainable=True)

    def call(self, inputs):
        return tf.matmul(inputs, self.kernel)
        
start = 3
limit = 9
delta = 3
        
# Create DATA
sample_1 = tf.range(start, limit, delta)
sample_1 = tf.cast( sample_1, dtype=tf.float32 )

start = 4
limit = 12
delta = 4

# Create DATA
sample_2 = tf.range(start, limit, delta)
sample_2 = tf.cast( sample_2, dtype=tf.float32 )

# Multiply
sample_1 = tf.constant( sample_1, shape=( 1, 2 ) )
sample_2 = tf.constant( sample_2, shape=( 1, 2 ) )
layer = MyDenseLayer(4)
data = layer(sample_1)
data = layer(sample_2)

print( data )

相关问题