Разница
Когда вы используете tenorflow flatten, он добавляется в графическую операцию как операция (op). Может работать только на тензорах. Numpy, с другой стороны, работает с реальными массивами numpy. Использование совершенно другое.
Использование
Вы будете использовать tenorflow op, если это операция в процессе обучения, например изменение размера перед подачей на следующий слой.
Вы бы использовали numpy op, когда хотите оперировать с фактическим значением в это время, например, изменение формы для расчета точности в конце шага обучения.
Так что, если у вас было задание
тензор A -> изменить форму -> matrix_mul
Если вы используете tenorflow для изменения формы, вы можете напрямую запустить matrix_mul
из сеанса.
Однако, если вы используете numpy , вам придется выполнить операцию в в два этапа (два сеансовых вызова).
Вы вычисляете тензор A
Вы изменили его в numpy.
Запустите matrix_mul путем «подачи» в измененный массив.
Производительность
Я ничего не тестировал, но я бы сказал, что для операции преобразования только в автономном режиме numpy будет быстрее (без учета gpu), но в процессе, где reshape является промежуточной операцией, тензор потока должен быть быстрее.