我尝试使用 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'
...接下来是一堆其他错误,可能是由那个错误引起的。
其他教程效果很好。出了什么问题,如何解决?
通过错误消息的这一行
File "<stdin>", line 1
很明显,您直接将代码写入了 Python 解释器,并且通过该解释器的提示
>>>
很明显是你写的
optimizer = tf.train.RMSPropOptimizer(0.001)
作为最高(模块)级别的新命令,而不是作为函数定义的一部分。
如何解决:
您必须在
def build_model():
提示之后编写 >>>
命令,并在 ...
提示之后编写此函数定义的所有其他命令,并使用正确的缩进,直到 return model
命令。
(在
return model
命令后,按两次Enter返回到>>>
提示符,然后继续编写其他命令。)