Python 修改Tensorflow(Keras)优化器(用于分层学习率乘数)
我正在尝试在tensorflow(keras)中训练一名CNN,每层有不同的学习率。由于tensorflow中不包含此选项,我正在尝试修改一个已经存在的优化器,如本文所建议的 当我简单地复制在中找到的SGD优化器的源代码时 “C:\Users\user\Anaconda3\envs\tf\u gpu\Lib\site packages\tensorflow\u core\python\keras\optimizers.py” (没有任何修改)到我的脚本中,我尝试运行它,但得到以下错误:Python 修改Tensorflow(Keras)优化器(用于分层学习率乘数),python,tensorflow,keras,Python,Tensorflow,Keras,我正在尝试在tensorflow(keras)中训练一名CNN,每层有不同的学习率。由于tensorflow中不包含此选项,我正在尝试修改一个已经存在的优化器,如本文所建议的 当我简单地复制在中找到的SGD优化器的源代码时 “C:\Users\user\Anaconda3\envs\tf\u gpu\Lib\site packages\tensorflow\u core\python\keras\optimizers.py” (没有任何修改)到我的脚本中,我尝试运行它,但得到以下错误: Type
TypeError Traceback (most recent call last)
<ipython-input-2-757ea125a090> in <module>
----> 1 opti = SGD(lr=0.001, momentum=0.9, nesterov=False)
<ipython-input-1-dad895e21911> in __init__(self, lr, momentum, decay, nesterov, **kwargs)
63
64 def __init__(self, lr=0.01, momentum=0., decay=0., nesterov=False, **kwargs):
---> 65 super(SGD, self).__init__(**kwargs)
66 with K.name_scope(self.__class__.__name__):
67 self.iterations = K.variable(0, dtype='int64', name='iterations')
TypeError: __init__() missing 1 required positional argument: 'name'
它工作得很好,所以我有点害怕卸载现在运行的tensorflow版本并从源代码处编译它
另外,如果您知道如何使用tensorflow单独修改每一层的学习率的其他方法,请告诉我。这可能是由于实施不当造成的 我通过简单地添加一个name参数
name='sgd'
解决了这个问题
opti=SGD(lr=0.001,动量=0.9,nesterov=False,name='SGD')
让我知道这是否有效这可能是由于实施不当造成的 我通过简单地添加一个name参数
name='sgd'
解决了这个问题
opti=SGD(lr=0.001,动量=0.9,nesterov=False,name='SGD')
让我知道这是否有效您的更改是在C级别,因此我认为您必须从源代码重新编译当只修改Python代码时,不需要从源代码编译TF,因此即使您修改安装在PC中的TF Python代码,您也不需要构建它。请共享您正在运行的代码。无法重现您的错误,我复制了SGD实现,继承了优化器,它对我有效。您的更改是在C级别,因此我认为您必须从源代码重新编译当只修改Python代码时,不需要从源代码编译TF,因此,即使您修改了安装在PC中的TF Python代码,您也不需要构建它。请共享您正在运行的代码。无法重现您的错误,我复制了SGD实现,继承了优化器,它对我有效。
conda install tensorflow-gpu