繁体   English   中英

keras.layers 中 model 架构中的无效语法

[英]Invalid syntax in model architecture in keras.layers

下面是一个简单的 MLP 的代码,但它在最后一行显示了无效的语法。 怎么会出错?

#model architecture
model = keras.Sequential([
                          keras.layers.Flatten(input_shape=(32*32),
                          keras.layers.Dense(512, activation='relu'),
                          keras.layers.Dropout(0.4),
                          keras.layers.Dense(120, activation='relu'),
                          keras.layers.Dropout(0.2),
                          keras.layers.Dense(labels, activation='softmax')])

附有错误和代码片段的图像。 错误图像

您不需要在 flatten 层中传递输入的形状,它会自动将输入转换为一维行。

尝试:

model = keras.Sequential([
                  keras.layers.Flatten(),
                  keras.layers.Dense(512, activation='relu'),
                  keras.layers.Dropout(0.4),
                  keras.layers.Dense(120, activation='relu'),
                  keras.layers.Dropout(0.2),
                  keras.layers.Dense(2, activation='softmax')])

SyntaxError 消息可能非常具有误导性:

c:\a\bin>py toto.py 
  File "c:\a\bin\toto.py", line 8
keras.layers.Dense(labels, activation='softmax')])
                                                ^
SyntaxError: positional argument follows keyword argument

(那是因为解析器本身有些混乱)但它确实指向一个右方括号,所以这应该告诉你在某处有一个不匹配的括号。 获得帮助的一种方法是让您的编辑器缩进代码。 Emacs 是这样做的:

#model architecture
model = keras.Sequential([
keras.layers.Flatten(input_shape=(32*32),
                     keras.layers.Dense(512, activation='relu'),
                     keras.layers.Dropout(0.4),
                     keras.layers.Dense(120, activation='relu'),
                     keras.layers.Dropout(0.2),
                     keras.layers.Dense(labels, activation='softmax')])

它将对keras.layers.Dense的调用置于与input_shape参数相同的级别,因此显然我们在input_shape=(32*32)之后缺少括号。 再次缩进确认在此处添加括号可以解决问题:

#model architecture
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(32*32)),
    keras.layers.Dense(512, activation='relu'),
    keras.layers.Dropout(0.4),
    keras.layers.Dense(120, activation='relu'),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(labels, activation='softmax')])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM