Ошибка Tensorflow с Model.Fit: [[{{node IteratorGetNext}}]] - PullRequest
1 голос
/ 22 января 2020

У меня проблема с Tensorflows Model.Fit. Я искал inte rnet, и есть некоторые предположения, что моя проблема зависит от последней версии TF. Я надеюсь, что кто-то из вас может помочь мне исправить это или обойти эту ошибку.

Код ошибки:

BaseCollectiveExecutor::StartAbort Out of range: End of sequence
 [[{{node IteratorGetNext}}]]

Это происходит в каждую эпоху. Я думаю, что моя модель пока верна, но точность составляет около 1,28%, а потери около -1600. Это не может быть правдой.

Я использовал учебник "Загрузка данных CSV" с Tensorflow.org. Ссылка

Я положу весь свой код здесь, это около 150 строк. Я надеюсь, что кто-то может помочь решить эту проблему.

Большое спасибо за продвижение!

С уважением, Кристиан Рихтер

Мой код:

from __future__ import absolute_import, division, print_function, unicode_literals
import functools

import tensorflow as tf

import xlrd

import pandas as pd
import csv
import numpy as np
import csv

tf.compat.v1.enable_eager_execution()

train_data_url = "https://www.dropbox.com/s/mug8rjlniftu065/train_data_csv.csv?dl=0"

test_data_url = "https://www.dropbox.com/s/std8rt6lezl79ti/test_data_csv.csv?dl=0"

train_file_path = tf.keras.utils.get_file("train_data_csv.csv", train_data_url)
test_file_path = tf.keras.utils.get_file("test_data_csv.csv", test_data_url)

np.set_printoptions(precision = 3, suppress=True)

#!head {train_file_path}

Label_Column = 'Besucher'
Labels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 200, 300, 400, 500, 600, 700, 800, 900]

train_dataset = tf.data.experimental.make_csv_dataset(
    './Data/train_data_csv.csv',
    batch_size = 52609,
    select_columns = ['Datum','Uhrzeit','Wochentag','Wochenende','Ferien','Feiertag','Brueckentag','Schneechaos','Streik','Besucher'],
    label_name = 'Besucher',
    num_epochs = 1,
    shuffle = False)



test_dataset = tf.data.experimental.make_csv_dataset(
    './Data/alt_test_data_csv.csv',
    batch_size = 1,
    select_columns = ['Datum','Uhrzeit','Wochentag','Wochenende','Feiertag','Besucher'],
    label_name = 'Besucher',
    num_epochs = 1 ,
    shuffle = False)


def show_batch(dataset):
  for batch, label in dataset.take(1):
    for key, value in batch.items():
      print("{:20s}: {}".format(key,value.numpy()))




show_batch(train_dataset)

def pack(features, label):
    return tf.stack(list(features.values()), axis = -1), label

packed_dataset1 = train_dataset.map(pack)
#packed_dataset2 = test_dataset.map(pack)

for features, labels in packed_dataset1.take(1):
    print(features.numpy())
    print()
    print(labels.numpy())

example_batch, labels_batch = next(iter(train_dataset))


class PackNumericFeatures(object):
    def __init__(self, names):
        self.names = names

    def __call__(self, features, labels):

        numeric_features = [features.pop(name) for name in self.names]
        numeric_features = [tf. cast(feat, tf.float32) for feat in numeric_features]
        numeric_features = tf.stack(numeric_features, axis = -1)
        features['numeric'] = numeric_features

        return features, labels

NUMERIC_FEATURES = ['Datum','Uhrzeit','Wochentag','Wochenende','Ferien','Feiertag','Brueckentag','Schneechaos','Streik']

packed_train_data = train_dataset.map(
    PackNumericFeatures(NUMERIC_FEATURES)
)
packed_test_data = train_dataset.map(
    PackNumericFeatures(NUMERIC_FEATURES)
)

show_batch(packed_train_data)

example_batch, labels_batch = next(iter(packed_train_data))


desc = pd.read_csv("./Data/train_data_csv.csv")[NUMERIC_FEATURES].describe()
desc

MEAN = np.array(desc.T['mean'])
STD = np.array(desc.T['std'])

def normalize_numeric_data(data, mean, std):

    return(data-mean)/std

normalizer = functools.partial(normalize_numeric_data, mean = MEAN, std = STD)

numeric_column = tf.feature_column.numeric_column('numeric', normalizer_fn=normalizer, shape=[len(NUMERIC_FEATURES)])
numeric_columns = [numeric_column]
numeric_column

example_batch['numeric']

numeric_layer = tf.keras.layers.DenseFeatures(numeric_columns)
numeric_layer(example_batch).numpy()

preprocessing_layer = numeric_layer

print(preprocessing_layer(example_batch).numpy()[0])

model = tf.keras.Sequential([
    preprocessing_layer,
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid'),
])

model.compile(
    loss='binary_crossentropy',
    optimizer='adam',
    metrics=['accuracy']
)

train_data = packed_train_data.shuffle(500)
test_data = packed_test_data

model.fit(train_data, epochs = 20)

test_loss, test_accuracy = model.evaluate(test_data)

print('\n\nTest Loss {}, Test Accuracy{}'.format(test_loss, test_accuracy))

...