我正在关注Tensorflow教程,并进行了基本回归basic regression tutorial。当我进入“创建模型”部分时,以下代码给出了错误:
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'
...之后是其他一系列错误,可能是该错误导致的。
其他教程效果很好。有人可以指出问题吗?
答案 0 :(得分:0)
通过此错误消息行
File "<stdin>", line 1
很明显,您是在此解释器的提示下直接将代码写到了Python 解释器上
>>>
很明显您写了
optimizer = tf.train.RMSPropOptimizer(0.001)
作为最高级别(模块)上的新命令,而不是功能定义中的一部分。
如何解决:
您必须在def build_model():
提示符后编写>>>
命令,并在...
提示符后编写此函数定义的所有其他命令,并带有正确的缩进,直到{ {1}}命令。
(在return model
命令之后,按两次 Enter 返回到return model
提示符;然后继续编写其他命令。)