2016-04-14 49 views

回答

2

對於單個值,使用:

weights = tf.Variable(10) 

對於隨機值向量:

shape = [784, 625] 
weights = tf.Variable(tf.random_normal(shape, stddev=0.01)/tf.sqrt(n)) 

請注意,你需要sess.run評估的變量。

另外,請查看其它隨機張量:https://www.tensorflow.org/versions/r0.8/api_docs/python/constant_op.html#random-tensors

+0

非常感謝您的回覆。我不明白你展示的代碼行中的'np.random.randn(n)'在哪裏。我想我不想在標準偏差參數中使用'tf.random_normal',但是用'np.random.randn(n)'手動設置權重矩陣的每個權重。這可以實現嗎? – Kalanit

+0

我會使用tf.random.X。你可以用tf.random替換np.random.randn(n),並且做同樣的事情。請查看https://www.tensorflow.org/versions/r0.8/api_docs/python/constant_op.html#random-tensors。 –

+0

@Kalanit只是好奇,你認爲'randn'與'random_normal'有什麼不同? –

0
n = 10 
init_x = np.random.randn(n) 
x = tf.Variable(init_x) 
sess = tf.InteractiveSession() 
sess.run(tf.initialize_all_variables()) 
print(sess.run(x)) 
0

我這樣做以下列方式:

self.w_full, self.b_full = [], [] 

    n_fc_layers = len(structure) 
    structure.insert(0, self.n_inputs) 

    with vs.variable_scope(self.scope): 
     for lr_idx in range(n_fc_layers): 
      n_in, n_out = structure[lr_idx], structure[lr_idx+1] 
      self.w_full.append(
       vs.get_variable(
        "FullWeights{}".format(lr_idx), 
        [n_in, n_out], 
        dtype=tf.float32, 
        initializer=tf.random_uniform_initializer(
         minval=-tf.sqrt(tf.constant(6.0)/(n_in + n_out)), 
         maxval=tf.sqrt(tf.constant(6.0)/(n_in + n_out)) 
        ) 
       ) 
      ) 

      self.b_full.append(
       vs.get_variable(
        "FullBiases{}".format(lr_idx), 
        [n_out], 
        dtype=tf.float32, 
        initializer=tf.constant_initializer(0.0) 
       ) 
      ) 

structure.insert(0, self.n_inputs) 

你有[n_inputs ,第一FC層大小,第二FC層大小...輸出層大小]