AdamOptimizer类创建其他变量,称为“插槽”,以保存“ m”和“ v”累加器的值。
如果您对此感到好奇,请参阅此处的源代码,它实际上很容易阅读:https
:
//github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/adam.py#L39。其他优化器,例如Momentum和Adagrad也使用插槽。
必须先初始化这些变量,然后才能训练模型。
初始化变量正常的方法是调用
tf.initialize_all_variables()它增加了OPS初始化变量出现在图表 当它被称为 。
(除了:顾名思义,initialize_all_variables()不会初始化任何内容,它仅添加将在运行时初始化变量的操作。)
您必须做的是 在 添加优化器 之后 调用initialize_all_variables():
...build your model...# Add the optimizertrain_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)# Add the ops to initialize variables. These will include # the optimizer slots added by AdamOptimizer().init_op = tf.initialize_all_variables()# launch the graph in a sessionsess = tf.Session()# Actually intialize the variablessess.run(init_op)# now train your modelfor ...: sess.run(train_op)



