Python keras.layers中的模型体系结构中的语法无效
下面是一个简单MLP的代码,但在最后一行显示了无效的语法。这怎么会是个错误呢Python keras.layers中的模型体系结构中的语法无效,python,keras,Python,Keras,下面是一个简单MLP的代码,但在最后一行显示了无效的语法。这怎么会是个错误呢 #model architecture model = keras.Sequential([ keras.layers.Flatten(input_shape=(32*32), keras.layers.Dense(512, activation='relu'),
#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')])
附加的图像带有错误和代码片段。
您不需要在展平层中传递输入的形状,它会自动将输入转换为1d行 尝试:
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\u 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')])
与“提前感谢”和其他与问题无关的内容不同,请发布错误。当然。注意到建议并更新了问题。您附加的图像和问题中提供的代码不同。请仔细检查并添加格式正确的错误。如果您能帮助我调试它,我将不胜感激,因为您理解了问题,而不是问题的修饰。在这样做之后,也会抛出相同的错误,但现在在展平层线中。但在平行模型中,我已通过输入_shape=(28*28),这很好,那么这次的问题是什么?我知道keras会自动将其转换为一维阵列。但如果我想用硬编码的方式呢?嘿,我不确定你的并行模型代码,试着用替换*,就像这个keras.layers.Flatten(input_shape=(32,32)Hi Joao,这样做后也不起作用。请查看附带的错误图像。@sonu,是的,它“起作用”:您询问了一个语法错误,添加缺少的括号修复了该语法错误。您的图像显示的是,您的代码现在运行得更进一步,并且出现了另一个完全不同且不相关的错误:“'int'对象不可iterable”,因为tuple()要求的是一个可iterable,而不是int。
#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')])