Предельная ошибка 2 ГБ при обучении последовательной модели Keras с использованием набора данных Tensorflow - PullRequest
0 голосов
/ 06 ноября 2019

Я использую функцию tf.data.experimental.make_csv_dataset для создания входных данных для последовательной модели Keras. Моим первым слоем является DenseFeature, который получает список tf.feature_column (индикатор, сгруппированные, числовые и т. Д.). Следующие слои являются плотными с использованием активации Relu. Когда я запускаю функцию подгонки, я получаю сообщение об ошибке: «Невозможно создать протор-тензор, содержание которого превышает 2 ГБ». Что мне нужно изменить, чтобы сделать эту модель поезда?

Ниже приведена основная часть кода:

train_input = tf.data.experimental.make_csv_dataset(["df_train.csv"], batch_size=64, label_name="loss_rate", num_epochs=1)
eval_input = tf.data.experimental.make_csv_dataset(["df_val.csv"], batch_size=64, label_name="loss_rate", shuffle=False, num_epochs=1)

#all_features is generated by a function (it has 87 tf.feature_column objects)
feature_layer = layers.DenseFeatures(all_features)

def deep_sequential_model():
    model = tf.keras.Sequential([
        feature_layer,
        layers.Dense(64, activation='relu'),
        layers.Dense(32, activation='relu'),
        layers.Dense(1, activation='sigmoid')
    ])

    optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)

    model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae', 'mse'])

    return model

model = deep_sequential_model()
model.fit(train_input,
          validation_data=eval_input,
          epochs=10)

Я получаю сообщение об ошибке:

/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
   1696             "Cannot create a tensor proto whose content is larger than 2GB.")
   1697       if not _VALID_OP_NAME_REGEX.match(node_def.name):
-> 1698         raise ValueError("'%s' is not a valid node name" % node_def.name)
   1699       c_op = None
   1700     elif type(node_def).__name__ == "SwigPyObject":

ValueError: '_5' is not a valid node name```

1 Ответ

0 голосов
/ 07 ноября 2019

Я только что нашел проблему. У csv, который я загружал, был столбец индекса, который создавал Tensor без какого-либо имени, и я считаю, что это вызывало проблемы. Я просто удалил индекс из CSV, и он работал.

...