提问者:小点点

AttributeError:“List”对象没有属性“type”


我正在研究这个模型,该模型将标签编码输入转换为嵌入式输入,以用作训练目的的输入数据。 下面是模型函数

def get_model(encoded_inputs):
    input_layers = list()
    embedded_layers = list()
    for i in range(len(encoded_inputs)):
       n_labels = len(unique(encoded_inputs[i])) # get the number of unique labels
       input_layers = Input(shape=(1, )) #define input layer
       embedded_layers = Embedding(n_labels, 50)(input_layers) #define the embedding layer
      input_layers.append(input_layers) #store the input layer
      embedded_layers.append(embedded_layers) # store the embedded layer
      #concatenate all the embedded layers
      all_embedded_layers = concatenate(embedded_layers)
      all_embedded_layers.BatchNormalization()

dense = Dense(300, activation='relu', kernel_initializer='he_normal')(all_embedded_layers)
dense.Dropout(0.3)
dense.BatchNormalization()

dense = Dense(300, activation='relu', kernel_initializer='he_normal')(all_embedded_layers)
dense.Dropout(0.3)
dense.BatchNormalization()

output = Dense(1, activation='sigmoid')(dense)

model = Model(inputs = input_layers, outputs=output)
return model 

当我调用model函数时:

model = get_model (my_X_train_enc)

我得到了一个错误:

AttributeError      Traceback (most recent call last)
<ipython-input-47-dbeea8a10fb6> in <module>()
----> 1 model = get_model(my_X_train_enc)
  2 model.compile(loss='binary_crossentropy', optimizer='adam',    metrics=['accuracy'])

<ipython-input-46-e593e3e6dd87> in get_model(encoded_inputs)
  1 def get_model(encoded_inputs):
  2     input_layers = list()
----> 3     print(input_layers.type())
  4     embedded_layers = list()
  5     for i in range(len(encoded_inputs)):

AttributeError: 'list' object has no attribute 'type'

共1个答案

匿名用户

我相信错误是不言而喻的。input_layers=list(),因此变量的类型显然是list。 在下一行中,您尝试访问一个属性type,而Python中的list对象没有这个属性。 或者,如果只想检查变量本身的类型(而不是属性),可以使用type内置。 例如,type(input_layers)将返回

注:我还没有检查其余代码的有效性,但看起来错误只是由于您试图打印对象没有的属性的值而引起的