我想用tf.contrib.keras
来玩它。但是,我不明白。 tf.train
中的类具有用于优化函数的函数minimize
。但是,minimize
中的类不存在此tf.contrib.keras.optimizers
函数。我们假设我们有以下代码:
# tensorflow
tf.train.AdamOptimizer(learning_rate=0.001)
updateModel = trainer.minimize(loss)
# keras wrapper
trainer=tf.contrib.keras.optimizers.Adam()
updateModel = trainer.minimize(loss) # ERROR because minimize function does not exists
keras
包装器不起作用,因为没有minimize
功能。我尝试使用带有张量流的tf.keras
来查找示例或解决方法,但我找不到任何可以帮助我的内容。
P.S。在这里,我使用tf.contrib.keras.optimizers.Adam
作为一个虚拟示例,但我想使用同一个包中的其他优化器。
答案 0 :(得分:2)
这是由于<div class='container'>
<div class='col1' style="height: 80px;">1</div>
<div class='col3'>2</div>
<div class='col2'>3</div>
<div class='col3' style="height: 100px;">4</div>
<div class='col1'>5</div>
<div class='col2'>6</div>
<div class='col1'>7</div>
<div class='col3'>8</div>
<div class='col2'>9</div>
</div>
和keras
API之间的差异造成的。在tensorflow
中,优化器是在模型编译期间提供的函数,用于梯度下降优化:
keras
在model.compile(optimizer='adam', ...)
model.fit(..) <- optimiziation performed using Adam algorithm
中 - 您可以在演示时以自定义方式使用它。
答案 1 :(得分:1)
您的混淆是由于tf.contrib.keras
API 不完全 tensorflow并且不像核心张量流 1 那样使用。
如果查看源代码,tf.contrib.keras.optimizers
中的类几乎与keras.optimizers
中的类相同。例如,第一个Optimizer
和第二个Optimizer
,第一个SGD
和第二个SGD
,依此类推。 Keras正在逐步纳入张量流,但现在它更像是与张量流捆绑在一起的另一个项目,并且不能轻易地与任意张量流图一起使用。相反, keras 优化器应该与 keras 层一起使用。
因此,您可以坚持使用all-tensorflow API并使用tf.train.AdamOptimizer
(就像您现在所做的那样)或使用所有keras API并使用Adam
(请参阅Marcin的回答) 。我认为混合两者没有任何价值。
1 至少在TF 1.x中。在未来的版本中,Keras可能会更多地与TF集成。