Ошибка в Unet из-за несоответствия формата ввода или значений None (?) ⇐ Python
-
Anonymous
Ошибка в Unet из-за несоответствия формата ввода или значений None (?)
Я использую Unet для сегментации в этом файле https://github.com/erickfmm/ML-experime ... tterfly.py
Форма xtrain и ytrain: форма x_train (557, 100, 100, 3) форма y_train (557, 100, 100, 3)
И никаких значений None
Сводка() моей модели:
Слой (тип) Параметр выходной формы # Подключено к =============================================== ============================================== input_1 (InputLayer) [(Нет, 100, 100, 3)] 0 [] conv2d (Conv2D) (Нет, 100, 100, 32) 2432 ['input_1[0][0]'] выпадение (выпадение) (нет, 100, 100, 32) 0 ['conv2d[0][0]'] max_pooling2d (MaxPooling2 (Нет, 50, 50, 32) 0 ['dropout[0][0]'] Д) conv2d_1 (Conv2D) (Нет, 50, 50, 32) 25632 ['max_pooling2d[0][0]'] dropout_1 (Выпадение) (Нет, 50, 50, 32) 0 ['conv2d_1[0][0]'] max_pooling2d_1 (MaxPoolin (Нет, 25, 25, 32) 0 ['dropout_1[0][0]'] г2Д) conv2d_2 (Conv2D) (Нет, 25, 25, 32) 9248 ['max_pooling2d_1[0][0]'] dropout_2 (Выпадение) (Нет, 25, 25, 32) 0 ['conv2d_2[0][0]'] max_pooling2d_2 (MaxPoolin (Нет, 9, 9, 32) 0 ['dropout_2[0][0]'] г2Д) conv2d_3 (Conv2D) (Нет, 9, 9, 256) 73984 ['max_pooling2d_2[0][0]'] up_sampling2d (UpSampling2 (Нет, 27, 27, 256) 0 ['conv2d_3[0][0]'] Д) Zero_padding2d (ZeroPadding (Нет, 27, 27, 32) 0 ['conv2d_2[0][0]'] г2Д) объединить (Объединить) (Нет, 27, 27, 288) 0 ['up_sampling2d[0][0]', 'zero_padding2d[0][0]'] conv2d_4 (Conv2D) (Нет, 25, 25, 32) 82976 ['объединить[0][0]'] dropout_3 (Выпадение) (Нет, 25, 25, 32) 0 ['conv2d_4[0][0]'] up_sampling2d_1 (UpSamplin (Нет, 50, 50, 32) 0 ['dropout_3[0][0]'] г2Д) concatenate_1 (Объединить (Нет, 50, 50, 64) 0 ['up_sampling2d_1[0][0]', ) 'conv2d_1[0][0]'] conv2d_5 (Conv2D) (Нет, 46, 46, 32) 51232 ['concatenate_1[0][0]'] dropout_4 (Выпадение) (Нет, 46, 46, 32) 0 ['conv2d_5[0][0]'] up_sampling2d_2 (UpSamplin (Нет, 92, 92, 32) 0 ['dropout_4[0][0]'] г2Д) Zero_padding2d_1 (ZeroPadd (Нет, 100, 100, 32) 0 ['up_sampling2d_2[0][0]'] ing2D) concatenate_2 (Объединить (Нет, 100, 100, 64) 0 ['zero_padding2d_1[0][0]', ) 'conv2d[0][0]'] conv2d_6 (Conv2D) (Нет, 100, 100, 3) 1731 ['concatenate_2[0][0]'] =============================================== ============================================== И мой код
``` input = keras.Input(shape=(100,100,3)) x1 = Layers.Conv2D(32, 5, активация="relu", дополнение="то же самое")(вход) x = слои.Dropout(0.1)(x1) x = Layers.MaxPooling2D((2,2), padding="same")(x) x2 = Layers.Conv2D(32, 5,activation="relu",padding="same")(x) x = слои.Dropout(0.1)(x2) x = Layers.MaxPooling2D((2,2), padding="same")(x) x3 = Layers.Conv2D(32, 3,activation="relu",padding="same")(x) x = слои.Dropout(0.1)(x3) x = Layers.MaxPooling2D((3,3), padding="same")(x) x = Layers.Conv2D(256, 3,activation="relu",padding="same")(x) x = Layers.UpSampling2D(size=(3,3))(x) x3 = Layers.ZeroPadding2D(padding=(1, 1))(x3) x = Layers.concatenate([x, x3], ось=-1) x = Layers.Conv2D(32, 3, активация="relu", дополнение="valid")(x) x = слои.Dropout(0.1)(x) x = Layers.UpSampling2D(size=(2,2))(x) #x2 = Layers.ZeroPadding2D(2)(x2) x = Layers.concatenate([x, x2], ось=-1) x = Layers.Conv2D(32, 5, активация="relu", дополнение="valid")(x) x = слои.Dropout(0.1)(x) x = Layers.UpSampling2D(size=(2,2))(x) x = Layers.ZeroPadding2D(padding=(4, 4))(x) x = Layers.concatenate([x, x1], ось=-1) вывод = Layers.Conv2D(3, 3, активация="relu", дополнение="то же самое")(x) модель = keras.Model(входные данные = входные, выходные = выходные) model.summary() #только для печати модель.компилировать( оптимизатор = 'Адам', loss='sparse_categorical_crossentropy', метрики=['точность'] ) model.fit(x, y, эпох=100, пакет_размер=16) ``` Я исправил формы своих слоев, чтобы они были в порядке, я гарантировал отсутствие значений None и все значения int. Я не знаю, почему на выходе входной формы есть [], но я полагаю, это хорошо, не знаю, почему у меня выдает эту ошибку
Сообщение об ошибке
ПРЕДУПРЕЖДЕНИЕ:tensorflow:Keras обучает/подгоняет/оценивает данные, подобные массиву. Keras может быть не оптимизирован для этого формата, поэтому, если ваш формат входных данных поддерживается вводом-выводом TensorFlow (https://github.com/tensorflow/io), мы рекомендуем вместо этого использовать его для загрузки набора данных. Traceback (последний вызов последний): Файл «D:\\ML-experiments\test\butterfly.py», строка 189, в модель = simple_segmentation(x_train, y_train) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «D:\\ML-experiments\test\butterfly.py», строка 167, в simple_segmentation model.fit(x, y, эпох=100, пакет_размер=16) Файл «D:\\venv\Lib\site-packages\keras\src\utils\traceback_utils.py», строка 70, в error_handler поднять e.with_traceback(filtered_tb) с нуля Файл «D:\\venv\Lib\site-packages\keras\src\engine\data_adapter.py», строка 266, в int(i.shape[0]) для i в tf.nest.flatten(inputs) ^^^^^^^^^^^^^^^^ TypeError: аргумент int() должен быть строкой, байтовым объектом или действительным числом, а не NoneType. ```
Я использую Unet для сегментации в этом файле https://github.com/erickfmm/ML-experime ... tterfly.py
Форма xtrain и ytrain: форма x_train (557, 100, 100, 3) форма y_train (557, 100, 100, 3)
И никаких значений None
Сводка() моей модели:
Слой (тип) Параметр выходной формы # Подключено к =============================================== ============================================== input_1 (InputLayer) [(Нет, 100, 100, 3)] 0 [] conv2d (Conv2D) (Нет, 100, 100, 32) 2432 ['input_1[0][0]'] выпадение (выпадение) (нет, 100, 100, 32) 0 ['conv2d[0][0]'] max_pooling2d (MaxPooling2 (Нет, 50, 50, 32) 0 ['dropout[0][0]'] Д) conv2d_1 (Conv2D) (Нет, 50, 50, 32) 25632 ['max_pooling2d[0][0]'] dropout_1 (Выпадение) (Нет, 50, 50, 32) 0 ['conv2d_1[0][0]'] max_pooling2d_1 (MaxPoolin (Нет, 25, 25, 32) 0 ['dropout_1[0][0]'] г2Д) conv2d_2 (Conv2D) (Нет, 25, 25, 32) 9248 ['max_pooling2d_1[0][0]'] dropout_2 (Выпадение) (Нет, 25, 25, 32) 0 ['conv2d_2[0][0]'] max_pooling2d_2 (MaxPoolin (Нет, 9, 9, 32) 0 ['dropout_2[0][0]'] г2Д) conv2d_3 (Conv2D) (Нет, 9, 9, 256) 73984 ['max_pooling2d_2[0][0]'] up_sampling2d (UpSampling2 (Нет, 27, 27, 256) 0 ['conv2d_3[0][0]'] Д) Zero_padding2d (ZeroPadding (Нет, 27, 27, 32) 0 ['conv2d_2[0][0]'] г2Д) объединить (Объединить) (Нет, 27, 27, 288) 0 ['up_sampling2d[0][0]', 'zero_padding2d[0][0]'] conv2d_4 (Conv2D) (Нет, 25, 25, 32) 82976 ['объединить[0][0]'] dropout_3 (Выпадение) (Нет, 25, 25, 32) 0 ['conv2d_4[0][0]'] up_sampling2d_1 (UpSamplin (Нет, 50, 50, 32) 0 ['dropout_3[0][0]'] г2Д) concatenate_1 (Объединить (Нет, 50, 50, 64) 0 ['up_sampling2d_1[0][0]', ) 'conv2d_1[0][0]'] conv2d_5 (Conv2D) (Нет, 46, 46, 32) 51232 ['concatenate_1[0][0]'] dropout_4 (Выпадение) (Нет, 46, 46, 32) 0 ['conv2d_5[0][0]'] up_sampling2d_2 (UpSamplin (Нет, 92, 92, 32) 0 ['dropout_4[0][0]'] г2Д) Zero_padding2d_1 (ZeroPadd (Нет, 100, 100, 32) 0 ['up_sampling2d_2[0][0]'] ing2D) concatenate_2 (Объединить (Нет, 100, 100, 64) 0 ['zero_padding2d_1[0][0]', ) 'conv2d[0][0]'] conv2d_6 (Conv2D) (Нет, 100, 100, 3) 1731 ['concatenate_2[0][0]'] =============================================== ============================================== И мой код
``` input = keras.Input(shape=(100,100,3)) x1 = Layers.Conv2D(32, 5, активация="relu", дополнение="то же самое")(вход) x = слои.Dropout(0.1)(x1) x = Layers.MaxPooling2D((2,2), padding="same")(x) x2 = Layers.Conv2D(32, 5,activation="relu",padding="same")(x) x = слои.Dropout(0.1)(x2) x = Layers.MaxPooling2D((2,2), padding="same")(x) x3 = Layers.Conv2D(32, 3,activation="relu",padding="same")(x) x = слои.Dropout(0.1)(x3) x = Layers.MaxPooling2D((3,3), padding="same")(x) x = Layers.Conv2D(256, 3,activation="relu",padding="same")(x) x = Layers.UpSampling2D(size=(3,3))(x) x3 = Layers.ZeroPadding2D(padding=(1, 1))(x3) x = Layers.concatenate([x, x3], ось=-1) x = Layers.Conv2D(32, 3, активация="relu", дополнение="valid")(x) x = слои.Dropout(0.1)(x) x = Layers.UpSampling2D(size=(2,2))(x) #x2 = Layers.ZeroPadding2D(2)(x2) x = Layers.concatenate([x, x2], ось=-1) x = Layers.Conv2D(32, 5, активация="relu", дополнение="valid")(x) x = слои.Dropout(0.1)(x) x = Layers.UpSampling2D(size=(2,2))(x) x = Layers.ZeroPadding2D(padding=(4, 4))(x) x = Layers.concatenate([x, x1], ось=-1) вывод = Layers.Conv2D(3, 3, активация="relu", дополнение="то же самое")(x) модель = keras.Model(входные данные = входные, выходные = выходные) model.summary() #только для печати модель.компилировать( оптимизатор = 'Адам', loss='sparse_categorical_crossentropy', метрики=['точность'] ) model.fit(x, y, эпох=100, пакет_размер=16) ``` Я исправил формы своих слоев, чтобы они были в порядке, я гарантировал отсутствие значений None и все значения int. Я не знаю, почему на выходе входной формы есть [], но я полагаю, это хорошо, не знаю, почему у меня выдает эту ошибку
Сообщение об ошибке
ПРЕДУПРЕЖДЕНИЕ:tensorflow:Keras обучает/подгоняет/оценивает данные, подобные массиву. Keras может быть не оптимизирован для этого формата, поэтому, если ваш формат входных данных поддерживается вводом-выводом TensorFlow (https://github.com/tensorflow/io), мы рекомендуем вместо этого использовать его для загрузки набора данных. Traceback (последний вызов последний): Файл «D:\\ML-experiments\test\butterfly.py», строка 189, в модель = simple_segmentation(x_train, y_train) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «D:\\ML-experiments\test\butterfly.py», строка 167, в simple_segmentation model.fit(x, y, эпох=100, пакет_размер=16) Файл «D:\\venv\Lib\site-packages\keras\src\utils\traceback_utils.py», строка 70, в error_handler поднять e.with_traceback(filtered_tb) с нуля Файл «D:\\venv\Lib\site-packages\keras\src\engine\data_adapter.py», строка 266, в int(i.shape[0]) для i в tf.nest.flatten(inputs) ^^^^^^^^^^^^^^^^ TypeError: аргумент int() должен быть строкой, байтовым объектом или действительным числом, а не NoneType. ```
Мобильная версия