Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python keras.layers中的模型体系结构中的语法无效_Python_Keras - Fatal编程技术网

Python keras.layers中的模型体系结构中的语法无效

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'),

下面是一个简单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')])
附加的图像带有错误和代码片段。

您不需要在展平层中传递输入的形状,它会自动将输入转换为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')])