Я использую Tensorflow 2.0, и у меня есть модель, построенная с использованием метода подклассов.
Модель принимает четыре входа, у меня есть tf.data.dataset, который выдает эти четыре входа.
При использовании пользовательского тренинга l oop, как в train_model.ipynb по ссылке выше, модель работает нормально.
Однако я хотел бы использовать керасы подходящая функция для обучения модели. Кажется, что функция подбора требует, чтобы входы передавались как один единственный вход, однако я не уверен, как объединить вывод padded_batch в одно значение, которое будет принимать подгонка?
Таким образом, он получает все четыре выхода пакета как отдельные входы. Как я могу собрать их все вместе в один вход?
ValueError Traceback (последний последний вызов) в 9 #outputs = model (входы) 10 #_model = tf.keras.Model (входы = входы, выходы = выходы) ---> 11 model.fit (ds_batched, epochs = 10, steps_per_epoch = 30, validation_data = ds_batched, validation_steps = 3)
C: \ Anaconda3 \ envs \ ml-tf200 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ training.py в соответствии (self, x, y, batch_size, эпохи, подробности, обратные вызовы , validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, работники, use_multiprocessing, ** kwargs) 726 max_queue_size = working_secess = 7_3029_32_pro_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_32_0_0_0_0_0_5_0_5_0_0 оценивать (self,
C: \ Anaconda3 \ envs \ ml-tf200 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_generator.py в соответствии (self, model , x, y, batch_size, эпохи, подробности, обратные вызовы, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, ** kwargs) 691 shuffle = начальное_процедурное_имя_элемента_произведения_3_произведения_перечисления_имя_переменных_переменных_представлений_переменных_переменных_процедур_переменных_символов_представления_перечисления_перечисления_перечисления_выпуска_элемент_переменного_произведения> начального_ шага> начальное_имя_перечисления_6 = 'steps_per_epoch') 694 695 def оценивать (self,
C: \ Anaconda3 \ envs \ ml-tf200 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_generator.py в модели model_iteration (модель, данные, steps_per_epoch, эпохи, подробные данные, обратные вызовы, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, рабочие, use_multiprocessing, shuffle, initial_epoch, режим, пакетная обработка_size, steps_name, step_sept_seps 220, step_segs_steps 220, step_segs_steps 220, step_segs_steps, target_name, step_seg_2, 221 batch_data = _get_next_batch (генератор) 222, если batch_data равен None: 223, если is_dataset:
C: \ Anaconda3 \ envs \ ml-tf200 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ training_generator.py в _get_next_batch (генератор) 372 'Вывод генерируемых или должен быть набором из 1, 2 или 3 элементов «373»: (вход,) или (вход, цель) или «-> 374» (вход, цель, sample_weights). Получено {} '. Format (generator_output)) 375 return generator_output 376
ValueError: Выход генератора должен быть кортежем из 1, 2 или 3 элементов: (input,) или (input, target) или (input) , target, sample_weights). Получено (
[[ -46.675, -39.28 , -36.53 ],
[ -59.675, -45.28 , -41.53 ],
[ -64.675, -62.28 , -55.53 ],
...,
[-106.675, -95.28 , -70.53 ],
[-109.675, -102.28 , -88.53 ],
[-107.675, -100.28 , -81.53 ]],
[[ -53.675, -38.28 , -40.53 ],
[ -71.675, -65.28 , -63.53 ],
[ -51.675, -61.28 , -53.53 ],
...,
[-108.675, -95.28 , -68.53 ],
[-108.675, -99.28 , -81.53 ],
[-103.675, -99.28 , -80.53 ]],
...,
[[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
...,
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ]],
[[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
...,
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ]],
[[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
...,
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ]]]], dtype=float32)>, <tf.Tensor: id=24248, shape=(1, 11), dtype=float32, numpy=
массив ([[480., 640., 3., 432., 576., 3., 448., 576. , 3., 0.9, 0.]], dtype = float32)>, 0.9269999, 299.178, 288.95398], [1.701, 2.7899997, 138.303, 400.44598], [33.975, 62.127, 425.27698, 518.472], [1.143, 510.3, 78.41699 , 575,1], [82,521, 531,018, 168,984, 574,776], [78,597, 225,252, 196,875, 334,584]]], dtype = float32)>,)