ValueError: Ошибка передачи словарного ввода в последовательную модель, у которой нет FeatureLayer, поскольку первый слой является ошибкой - PullRequest
0 голосов
/ 05 февраля 2020

Я попытался запустить следующий код, но получил эту ошибку:

Файл "C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site -packages \ tenorflow_core \ python \ keras \ engine \ training.py ", строка 819, вписывается
use_multiprocessing = use_multiprocessing)
Файл" C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ " Python37 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_v2.py ", строка 235, в подгонке
use_multiprocessing = use_multiprocessing)
Файл" C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_v2.py ", строка 593, в _process_training_inputs
use_multiprocessing = use_multiprocessing)
Файл" C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ training_v2.py ", строка 706, в _process_inputs
use_multiprocessing = use_multiprocessing)
Файл" C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ P ython37 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ data_adapter.py ", строка 702, в init
x = standardize_function (x)
Файл" C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_v2.py ", строка 660, в standardize_function
стандартизировать (набор данных, extract_tensors_from_dataset = False)
Файл "C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training.py", строка 2346, в _standardize_user_data
all_inputs, y_input, dict_inputs = self._build_model_with_inputs (x, y) Файл "C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ensorflow_core \ python \ keras \ engine \ training.py ", строка 2572, в _build_model_with_inputs
self._set_inputs (cast_inputs)
Файл" C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ training.py ", строка 2647, в _set_inputs
входные данные = self._set_input_attrs (входные данные)
файл "C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ensorflow_core \ python \ training \ tracking \ tracking \ base.py ", строка 457, в _method_wrapper
result = method (self, * args, ** kwargs)
Файл" C: \ Users \ TomerK \ AppData \ Local \ Programs \ Python \ Python37 \ \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training.py ", строка 2681, в _set_input_attrs
повышение ValueError ('Передача словарного ввода в последовательную модель'
ValueError: Передача словарного ввода в Последовательная модель, в которой в качестве первого слоя отсутствует FeatureLayer, является ошибкой.

Код:

# -*- coding: utf-8 -*-
import os
#os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

import tensorflow as tf
import tensorflow_datasets as tfds

try:
    model = keras.models.load_model("passrockmodel.h5")
except:
    print('\nDownloading Train Dataset...\n')
    train_dataset = tfds.load(name="rock_you", split="train[:75%]")
    assert isinstance(train_dataset, tf.data.Dataset)

    print('\nDownloading Test Dataset...\n')
    test_dataset = tfds.load("rock_you", split='train[-25%:]')
    assert isinstance(test_dataset, tf.data.Dataset)

    model = tf.keras.Sequential([
      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'])


    model.fit(train_dataset, epochs=20)

    model.save("passrockmodel.h5")


test_loss, test_accuracy = model.evaluate(test_dataset)

print('\nPredicting...\n')

predictions = model.predict(test_dataset)

print(predictions[0])
...