初始化张量流中的矩阵

时间:2017-09-12 06:49:37

标签: python machine-learning tensorflow

我有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))

我需要做的是更改初始化。我想将它们中的每一个初始化为一个单位矩阵。 有人可以帮助我吗?

2 个答案:

答案 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