ValueError: Нет данных для "conv2d_input". Нужны данные для каждого ключа в: ['conv2d_input'] - PullRequest
0 голосов
/ 23 марта 2020

Когда я использую набор данных малярия для создания простого CNN с тензорным потоком, в python, с ноутбуками Jupyter, у меня появляется эта ошибка: ValueError: No data provided for "conv2d_input". Need data for each key in: ['conv2d_input'].

Это мой репозиторий GitHub с кодом

Это мой код для создания модели:

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(16, (3, 3), padding='same', activation='relu', input_shape=[103, 103, 3]),
    tf.keras.layers.MaxPool2D(),
    tf.keras.layers.Conv2D(64, (3, 3), padding='same', activation='relu'),
    tf.keras.layers.MaxPool2D(),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.Dense(1, activation='relu')
])

model.compile(optimizer='adam', 
              loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
              metrics=['accuracy'])

И общее:

Model: "sequential_12"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 103, 103, 16)      448       
_________________________________________________________________
max_pooling2d_24 (MaxPooling (None, 51, 51, 16)        0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 51, 51, 64)        9280      
_________________________________________________________________
max_pooling2d_25 (MaxPooling (None, 25, 25, 64)        0         
_________________________________________________________________
flatten_12 (Flatten)         (None, 40000)             0         
_________________________________________________________________
dense_36 (Dense)             (None, 128)               5120128   
_________________________________________________________________
dense_37 (Dense)             (None, 32)                4128      
_________________________________________________________________
dense_38 (Dense)             (None, 1)                 33        
=================================================================
Total params: 5,134,017
Trainable params: 5,134,017
Non-trainable params: 0

И fit:

model.fit(
    train,
    steps_per_epoch=train_size,
    epochs=epochs,
    validation_data=validate,
    validation_steps=validate_size
)

Возможно, это ошибка:

ValueError: in converted code:

    /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/keras/engine/training_v2.py:677 map_fn
        batch_size=None)
    /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/keras/engine/training.py:2410 _standardize_tensors
        exception_prefix='input')
    /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/keras/engine/training_utils.py:510 standardize_input_data
        'for each key in: ' + str(names))

    ValueError: No data provided for "conv2d_input". Need data for each key in: ['conv2d_input']

1 Ответ

1 голос
/ 10 апреля 2020

Попробуйте tfds.load('malaria', split='train[0%:70%]', with_info=True, as_supervised=True).

as_supervised=True вернет набор данных (image, label) вместо dict(image=, ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...