Использование float64 в tf.layers - PullRequest
0 голосов
/ 29 мая 2018

Я знаю, что могу установить тип данных заполнителей и тензоров, используя аргумент dtype=tf.<DTYPE>.

Есть ли способ явно заставить веса внутри tf.layers (скажем, tf.layers.conv2d) быть float64 или веса слоя всегда принимают точный тип данных своих входных данных?

Я пытаюсь выполнить следующие настройки обучения

  1. Ввод: float32, вес: float32
  2. Ввод: float32, вес: float64
  3. Ввод: float64, вес: float32
  4. Ввод: float64, вес: float64

И хотелось бы знать, возможны ли вышеуказанные комбинациии как явно запретить TensorFlow изменять тип данных одного для соответствия типу данных другого

1 Ответ

0 голосов
/ 29 мая 2018

Я не думаю, что вы можете сделать это эффективно.Большинство операций, таких как tf.matmul, требует, чтобы их операнды имели одинаковый тип.Таким образом, вы в конечном итоге преобразуете tf.float32 в tf.float64 всякий раз, когда вы хотите, чтобы вычисления происходили с такой точностью.

С вычислительной точки зрения, учтите, что для видеокарты характерно гораздо меньшеодаренный для операций FP64, чем для FP32.Например, графическая карта P5000, P6000 или GTX 1080 имеет только 1/32 ядра FP64, чем FP32.Titan V с коэффициентом 1/2 является одним из лучших, которые вы можете получить.

Наконец, особенно в области глубокого обучения, точность вычислений никогда не была проблемой.На самом деле, добавление noise к вычислениям (в основном посредством стохастического градиентного спуска) - это то, что большинство людей думают, что обучение делает работу, и на самом деле можно успешно обучать модели с плавающими точками с половинной точностью .

...