tensorflow报错:'GradientDescentOptimizer' object has no attribute 'minimizer'

今天用Tensor跑手写数字识别的时候遇见这样一个错误:

optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimizer(loss)
AttributeError: 'GradientDescentOptimizer' object has no attribute 'minimizer'

tensorflow报错_GradientDescentOptimizer_01
看错误提示是说GradientDescentOptimizer这个类没有minimizer这个属性。
OK,先去搜索一下,发现百度上没有书的人文章。
那就看一下GradientDescentOptimizer这个类的源码吧,它的源码是这样的:

class GradientDescentOptimizer(optimizer.Optimizer):
  def __init__(self, learning_rate, use_locking=False, name="GradientDescent"):
    super(GradientDescentOptimizer, self).__init__(use_locking, name)
    self._learning_rate = learning_rate

  def _apply_dense(self, grad, var):

  def _resource_apply_dense(self, grad, handle):

  def _resource_apply_sparse_duplicate_indices(self, grad, handle, indices):

  def _apply_sparse_duplicate_indices(self, grad, var):

  def _prepare(self):
  

我们可以发现这个类里确实没有minimizer这个属性,怎么办呢?
我们可以发现GradientDescentOptimizer继承自optimizer.Optimizer这个类,那么就去这个类里看看吧
我们可以发现这个类有如下的属性和方法:

class Optimizer(object):
  GATE_NONE = 0
  GATE_OP = 1
  GATE_GRAPH = 2
  def __init__(self, use_locking, name):

  def get_name(self):
  
  def minimize(self, loss, global_step=None, var_list=None,
               gate_gradients=GATE_OP, aggregation_method=None,
               colocate_gradients_with_ops=False, name=None,
               grad_loss=None):

  def compute_gradients(self, loss, var_list=None,
                        gate_gradients=GATE_OP,
                        aggregation_method=None,
                        colocate_gradients_with_ops=False,
                        grad_loss=None):

可以发现这个类中的一个minimize方法与minimizer非常类似,这个时候基本上就可以确定是我们多写了个’r’,

optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(loss)

OK,修改过后我们可以发现程序是正常的:
tensorflow报错_GradientDescentOptimizer_02.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值