Проблема в моем коде из-за tf.shape и Tensor.shape. `tf.shape` и `Tensor.shape`, оба не работаютPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема в моем коде из-за tf.shape и Tensor.shape. `tf.shape` и `Tensor.shape`, оба не работают

Сообщение Anonymous »


Я написал конвейер обнаружения объектов DETR с нуля в Tensorflow.
DETR: Ссылка на Kaggle Notebook: содержит весь код; Создайте собственную копию блокнота, чтобы воспроизвести проблему

DETR: ссылка на Github

Я протестировал все отдельные компоненты конвейера, и они работают.
Но когда я начинаю обучать его на своем наборе данных (в форме tf.data.Dataset)
Ссылка на часть кода, которая выдает ошибку

ValueError: в пользовательском коде: Файл «/tmp/ipykernel_19/4115406382.py», строка 7, в train_step * y_pred = matcher(y_train, y_pred) Файл "/tmp/ipykernel_19/968499204.py", строка 64, в __call__ * class_prob, bbox_pred = Matcher.match(class_true, bbox_true, class_prob, bbox_pred) Файл "/tmp/ipykernel_19/968499204.py", строка 53, в совпадении * C = Matcher.batched_cost_matrix(class_true, bbox_true, class_prob, bbox_pred) Файл «/tmp/ipykernel_19/968499204.py», строка 46, в пакетной_костной_матрице * tf.range(tf.shape(class_true)[0]), fn_output_signature=tf.float32 Файл «/tmp/ipykernel_19/968499204.py», строка 22, в Compute_cost_matrix * N = tf.shape(class_true)[0] ValueError: индекс среза 0 измерения 0 выходит за пределы. for '{{nodemap/ while/strided_slice_4}} = StridedSlice[Index=DT_INT32, T=DT_INT32, Begin_mask=0, ellipsis_mask=0, end_mask=0, new_axis_mask=0, Shrink_axis_mask=1](map/ while/Shape, карта/пока/strided_slice_4/stack, карта/пока/strided_slice_4/stack_1, карта/пока/strided_slice_4/stack_2)' с входными формами: [0], [1], [1], [1] и с вычисленными входными тензорами: input[1] = , input[2] = , input[3] = . Когда я печатаю форму class_true с помощью tf.shape, я получаю Tensor("Shape_2:0", shape=(1,), dtype=int32) который я не понимаю.
При использовании Tensor.shape возвращается фигура с None, поэтому я снова получаю ошибку.

Но распечатывая его во время индивидуального тестирования (не обучения), я получаю правильную форму class_true как tf.Tensor([42], shape=(1,), dtype=int32) Как это исправить?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»