“意外缩进”或“对象没有属性‘编译’”错误[重复]

问题描述 投票:0回答:1

我尝试使用 Tensorflow 基本回归教程中的代码

def build_model():
  model = keras.Sequential([
    keras.layers.Dense(64, activation=tf.nn.relu, 
                       input_shape=(train_data.shape[1],)),
    keras.layers.Dense(64, activation=tf.nn.relu),
    keras.layers.Dense(1)
  ])

  optimizer = tf.train.RMSPropOptimizer(0.001)

  model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae'])
  return model

model = build_model()
model.summary()

但是我收到一条错误消息:

>>>   optimizer = tf.train.RMSPropOptimizer(0.001)
  File "<stdin>", line 1
    optimizer = tf.train.RMSPropOptimizer(0.001)
    ^
IndentationError: unexpected indent

如果我取消缩进

optimizer = ...
行,下一行会给出相同的错误。如果我取消缩进
model.compile ...
行,我会得到:

>>> model.compile(loss='mse',
...                 optimizer=optimizer,
...                 metrics=['mae'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'compile'

...接下来是一堆其他错误,可能是由那个错误引起的。

其他教程效果很好。出了什么问题,如何解决?

python tensorflow indentation
1个回答
-1
投票

通过错误消息的这一行

  File "<stdin>", line 1

很明显,您直接将代码写入了 Python 解释器,并且通过该解释器的提示

>>>

很明显是你写的

  optimizer = tf.train.RMSPropOptimizer(0.001)

作为最高(模块)级别的新命令,而不是作为函数定义的一部分。

如何解决:

您必须在

def build_model():
提示之后编写
>>>
命令,并在
...
提示之后编写此函数定义的所有其他命令,并使用正确的缩进,直到
return model
命令。

(在

return model
命令后,按两次Enter返回到
>>>
提示符,然后继续编写其他命令。)

© www.soinside.com 2019 - 2024. All rights reserved.