У меня есть сеть Tensorflow, и я перенес ее в формате Caffe. Все веса и алгоритм в Caffe и TF верны, я проверял это несколько раз.
Но когда я запускаю обе платформы и сравниваю их вывод за слоем, начинают появляться небольшие различия.
Например, если результат BatchNormalization
в одной точке в Caffe равен 0.940091
, то для TF в той же точке это 0.939559
, поэтому разница составляет 0.0005319999999999769
. Очень маленький, но он усиливается глубже в сети, и в конечном итоге значения очень разные.
Для Convolution
разница также присутствует (-2.7540846 Caffe
-2.7540843 TF
), но она становится более заметной после первого BatchNormalization
Я полагаю, что это может быть какая-то внутренняя разница и кастинг между какими-то FP16, FP32, FP64
. Понятия не имею, как TF обрабатывает преобразование из графа Python в граф C ++.
Может быть, кто-то сталкивался с такой же проблемой?