2017-09-28 29 views
0

這是一個更復雜的模型的一部分(這是自動編碼部分):無法初始化tensorflow AdamOptimizer定製var_list

autoweights = { 
    'encoder_h1': tf.Variable(tf.random_normal([num_input, num_hidden_1])), 
    'encoder_h2': tf.Variable(tf.random_normal([num_hidden_1, num_hidden_2])), 
    'decoder_h1': tf.Variable(tf.random_normal([num_hidden_2, num_hidden_1])), 
    'decoder_h2': tf.Variable(tf.random_normal([num_hidden_1, num_input])), 
} 
autobiases = { 
    'encoder_b1': tf.Variable(tf.random_normal([num_hidden_1])), 
    'encoder_b2': tf.Variable(tf.random_normal([num_hidden_2])), 
    'decoder_b1': tf.Variable(tf.random_normal([num_hidden_1])), 
    'decoder_b2': tf.Variable(tf.random_normal([num_input])), 
} 

我然後收集我的變量:

aut_params = [ k for k in autoweights] + [ k for k in autobiases] 

的通他們AdamOptimizer

optimizer = tf.train.AdamOptimizer(
    learning_rate=1e-4, 
    beta1=0.5, 
    beta2=0.9 
).minimize(loss, var_list=aut_params) 

然後我得到一個奇怪的錯誤,我不明白:

~/Documents/ML/OutlierGAN/outlierganv1/env/lib/python3.6/site-packages/tensorflow/python/training/optimizer.py in _get_processor(v) 
    149 def _get_processor(v): 
    150 """The processor of v.""" 
--> 151 if v.op.type == "VarHandleOp": 
    152  return _DenseResourceVariableProcessor(v) 
    153 if isinstance(v, variables.Variable): 

AttributeError: 'str' object has no attribute 'op' 

回答

2

既然你有你的變量字典,即重點:這是實際的TensorFlow對象:TensorFlowVariable,你用這些變量,這是字符串,而不是值的鍵建立名單。因此str has no attribute...

+0

我當然很愚蠢。 – Leander

+0

你可以選擇它作爲答案;)。 也讓我知道,如果這工作,因爲我不明白你是什麼定義爲'損失' –

+0

有9分鐘的時間框架,直到我可以選擇答案。我已經開放了,不用擔心;) – Leander