我有6个矩阵,我的模型将学习,我将它们定义如下:
self.R= tf.get_variable('R_',dtype=tf.float32, shape=[6,300 ,300],
initializer=tf.random_uniform_initializer(maxval=0.1, minval=-0.1))
我需要做的是更改初始化。我想将它们中的每一个初始化为一个单位矩阵。 有人可以帮助我吗?
答案 0 :(得分:2)
如果你想创建一个6x300x300矩阵,其中每个300x300阵列都是一个单位矩阵,你可以简单地说:
import numpy as np;
dimension = 300
singleIdentityMatrix = np.identity(dimension, dtype= np.float32)
stackedMatrix = np.dstack( [singleIdentityMatrix] * 6)
并使用
传递此矩阵self.R = tf.Variable(initial_value = stackedMatrix)
答案 1 :(得分:1)
identity initializer应该有所帮助,它可以在TensorFlow 1.3中找到。此接口仅支持2D阵列。
将您的代码更改为
self.R= tf.get_variable('R_',dtype=tf.float32, shape=[6,300 ,300],
initializer=tf.initializers.identity())
另一种方法是使用numpy生成一个单位矩阵并作为Variable的初始值,但是单位矩阵大小不能太大,这会导致'tf.Graph'大于2GB