[英]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.