【问题标题】:Regulizer in Conv2D kerasConv2D keras 中的正则器
【发布时间】:2020-03-10 13:51:57
【问题描述】:

我看到人们在 Dense 层使用调节器,但在 keras 文档中的 Conv2d 中有一个 kernel_regulizer 参数:

https://keras.io/layers/convolutional/

当我按如下方式添加调节器时:

conv1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', kernel_regularizer=regularizers.l2(), input_shape=x_train_n.shape[1:])(g0)

我得到这个错误:

NameError: name 'regularizers' is not defined

我已经导入了:

import tensorflow as tf
from tensorflow.python.keras.models import Model
from tensorflow.python.keras.layers import Input, Activation, Conv2D, MaxPooling2D, BatchNormalization, UpSampling2D, Lambda, \
Conv2DTranspose, Permute, GaussianNoise, advanced_activations, Add, LeakyReLU, Dropout, ActivityRegularization
from tensorflow.python.keras import regularizers

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.figure as fgr
from tensorflow.python.keras import backend
from tensorflow.python.keras.utils import plot_model, normalize
from tensorflow.python.keras.callbacks import EarlyStopping

如何在 Conv2D 中调用调节器?进口有冲突吗?

【问题讨论】:

  • 您确定您运行的代码正确吗?该错误似乎暗示 from tensorflow.python.keras import regularizers 在您尝试创建转换层之前没有运行。
  • No 错误在 conv2d 的同一行。在添加 from tensorflow.python.keras import regularizers 之前,python 无法识别 regularizers.l2()'l2' 等。这是我可以将参数传递给 conv2D 而不会出现 Pycharm IDE 中的行内错误的唯一方法。
  • 请提供一个完整的例子来重现错误。

标签: tensorflow keras deep-learning


【解决方案1】:

我能够运行您的代码而没有任何错误。我们唯一一次收到错误是在@The Guy with The Hat 提到的场景中,即在您尝试创建Conv2D 层之前,来自tensorflow.python.keras import regularizers 的行没有运行。

在下面的代码中,注释了from tensorflow.python.keras import regularizers,然后我们得到了你提到的错误。

import tensorflow as tf
from tensorflow.python.keras.models import Model
from tensorflow.python.keras.layers import Input, Activation, Conv2D, MaxPooling2D, BatchNormalization, UpSampling2D, Lambda, \
Conv2DTranspose, Permute, GaussianNoise, advanced_activations, Add, LeakyReLU, Dropout, ActivityRegularization
# from tensorflow.python.keras import regularizers

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.figure as fgr
from tensorflow.python.keras import backend
from tensorflow.python.keras.callbacks import EarlyStopping

conv1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', kernel_regularizer=regularizers.l2(), input_shape=(32,32,3))

输出 -

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-2ab79df3a82b> in <module>()
     10 from tensorflow.python.keras.callbacks import EarlyStopping
     11 
---> 12 conv1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', kernel_regularizer=regularizers.l2(), input_shape=(32,32,3))

NameError: name 'regularizers' is not defined

希望这能回答您的问题。快乐学习。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2019-09-19
    • 2021-02-16
    • 1970-01-01
    • 2018-08-31
    相关资源
    最近更新 更多