Keras:AttributeError:“ int”对象没有属性“ lower”

时间:2019-10-20 10:41:59

标签: python tensorflow keras

我正在建立一个以keras和tensorfrolw为后端的神经网络。它具有0到9的3个输入和0到9的3个输出。数据以numpy数组的形式提供:[[''1''4''0']  ['6''2''1'] ...]。

我是深度学习的新手,这是我的第一个神经网络之一,所以我迷路了,不知道是什么导致了这个错误。

我知道,如果有人对此有任何见解,我可能需要更改优化器,损失,指标以及可能还有更多属性。

model = keras.Sequential([
    keras.layers.Flatten(3, input_shape=(3, 3)),
    keras.layers.Dense(9, activation="relu"),
    keras.layers.Dense(9, activation="relu"),
    keras.layers.Dense(3, activation="relu")
])
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(training_input, training_output, epochs=5)

运行此程序时出现此错误:

Traceback (most recent call last):
  File "C:/Users/---/---/---/---/---/---/---/main.py", line 15, in <module>
    keras.layers.Flatten(3, input_shape=(3, 3)),
  File "C:\Users\---\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\keras\layers\core.py", line 571, in __init__
    self.data_format = conv_utils.normalize_data_format(data_format)
  File "C:\Users\---\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\keras\utils\conv_utils.py", line 191, in normalize_data_format
    data_format = value.lower()
AttributeError: 'int' object has no attribute 'lower' \

2 个答案:

答案 0 :(得分:0)

请检查Keras Documentation是否使用Flatten()层。您正在滥用Flatten。我建议您在模型之前对数据进行重塑,然后将其反馈到模型中。

答案 1 :(得分:0)

我本来应该为展平层提供参数的。爆破:

import tensorflow.keras.layers as l

h = i = l.Input(shape=(10, 5))
h = l.Flatten(50)(h) # don't do this!
o = l.Dense(50)(h)
model = keras.Model(inputs=i, outputs=o)
model.compile(optimizer='adam', loss='mse')

未指定参数的情况下,模型会编译:

import tensorflow.keras.layers as l

h = i = l.Input(shape=(10, 5))
h = l.Flatten()(h) # do this!
o = l.Dense(50)(h)
model = keras.Model(inputs=i, outputs=o)
model.compile(optimizer='adam', loss='mse')