AttributeError: у объекта 'Sequential' нет атрибута 'total_loss' - PullRequest
4 голосов
/ 11 марта 2019

Я рвал на себе волосы, пытаясь понять это в течение нескольких дней.Я использую tenorflow-gpu v1.13.1, и я мог найти только 2 других потока, даже упоминая подобную ошибку.

Воссозданная ошибка:

import numpy as np
import tensorflow as tf
from tensorflow import keras
def createModel():
    model = tf.keras.models.Sequential()
    model.add(tf.keras.layers.Dense(5, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dense(5, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dense(1, activation=tf.nn.sigmoid))
    model.compile(optimizer='sgd',
                  loss='mean_squared_error')
    return model

def array_generator():
    yield np.array([0.1,0.2,0.3,0.4,0.5]), np.array([1])

model=createModel()
model.fit_generator(array_generator(), epochs=5, steps_per_epoch=5)

Я пытаюсь создать нейронную сеть, чтобы классифицировать файл как вредоносный или нематериальный.Исходный исходный код, X_train, y_train, X_test и y_test - все это массивы numpy.

import tensorflow as tf
import numpy as np
import ember
import random
X_train, y_train, X_test, y_test = ember.read_vectorized_features("C:\\Users\Cody\Desktop\synopsys\data\ember")
metadata_dataframe = ember.read_metadata("C:\\Users\Cody\Desktop\synopsys\data\ember")


#load testing set
def loadTestSet():
    X_test_tf = tf.convert_to_tensor(X_test, np.float32)
    y_test_tf = tf.convert_to_tensor(y_test, np.float32)
    return X_test_tf, y_test_tf

#create compiled keras model
def createModel():
    model = tf.keras.models.Sequential()
    #ADD L2 REGULARIZATION LATER
    model.add(tf.keras.layers.Dense(7351, activation=tf.nn.relu))
    '''model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(4096, activation=tf.nn.relu))'''
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(4096, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(4096, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(2048, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(2048, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(2048, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(1024, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(1024, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(1024, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(1024, activation=tf.nn.relu))
    model.add(tf.keras.layers.Dropout(0.2))
    model.add(tf.keras.layers.Dense(1, activation=tf.nn.sigmoid))
    #adam metrhod for stochastic gradient descent
    model.compile(optimizer='adam',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    return model

def generate_arrays(features, labels, batch_size):
    batch_features=np.zeros((batch_size, 7351), dtype=np.float32)
    batch_labels=np.zeros((batch_size, 1), dtype=np.float32)
    while True:
        for i in range(batch_size):
            index=random.choice(900000,1)
            batch_features=X_train[index]
            batch_labels=y_train[index]
        yield batch_features, batch_labels

print('creating model')
model=createModel()
print('training model')
model.fit_generator(generate_arrays(X_train, y_train, 500), epochs=10, steps_per_epoch=1800)
print('testing model')
X_test_tf, y_test_tf = loadTestSet()
model.evaluate(X_test_tf, y_test_tf)

Это моя ошибка:

Traceback (последний вызов был последним): файл "C: /Users/Cody/Desktop/synopsys/train.py", строка76, в model.fit_generator (generate_arrays (X_train, y_train, 500), epochs = 10, steps_per_epoch = 1800) Файл "C: \ Users \ Cody \ AppData \ Local \ conda \ conda \ envs \ emberenv \ lib \ site-packages\ tenorflow \ python \ keras \ engine \ training.py ", строка 1426, в fit_generator initial_epoch = initial_epoch) Файл" C: \ Users \ Cody \ AppData \ Local \ conda \ conda \ envs \ emberenv \ lib \ site-packages \ "tenorflow \ python \ keras \ engine \ training_generator.py ", строка 125, в модели model_iteration, mode, class_weight = class_weight) Файл" C: \ Users \ Cody \ AppData \ Local \ conda \ conda \ envs \ emberenv \ lib \ site "-packages \ tenorflow \ python \ keras \ engine \ training_generator.py ", строка 427, в _make_execution_function model._make_fit_function () Файл" C: \ Users \ Cody \ AppData \ Local \ conda \ conda \ envs \ emberenv \ lib \ site-packages \ tenorflow \ python \ keras \ engine \ training.py ", строка 1926, в _make_fit_function '_fit_function', [self.total_loss] + metrics_tensors) AttributeError: у объекта 'Sequential' нет атрибута 'total_loss'

Любая помощь очень ценится, я слишком долго застрял на этом.

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

Я помогал другу с похожей проблемой (AttributeError: у объекта 'Sequential' нет атрибута 'total_loss'). После нескольких часов поиска и устранения неисправностей мы преодолели его, обновив тензорный поток до 2.0.0-alpha0. Мы также должны были сделать «подушку для установки в пунктах».

1 голос
/ 11 марта 2019

Это похоже на известную проблему для устаревшей версии Keras / Tensorflow https://github.com/keras-team/keras/issues/10323

Пожалуйста, обновите обе версии до последней версии.

...