Как отформатировать изображение для свертки в Python? [Дубликат]

Математическая математика с плавающей запятой такова. В большинстве языков программирования он основан на стандарте IEEE 754 . JavaScript использует 64-битное представление с плавающей запятой, которое совпадает с Java double. Суть проблемы состоит в том, что числа представлены в этом формате как целое число раз в два раза; рациональные числа (такие как 0.1, который является 1/10), знаменатель которого не является степенью двух, не могут быть точно представлены.

Для 0.1 в стандартном формате binary64 представление может записывается в точности как

  • 0.1000000000000000055511151231257827021181583404541015625 в десятичной форме или
  • 0x1.999999999999ap-4 в нотации C99 hexfloat .

Напротив, рациональное число 0.1, которое является 1/10, может быть записано точно как

  • 0.1 в десятичной форме или
  • 0x1.99999999999999...p-4 в аналоге обозначения гексафлоата C99, где ... представляет собой бесконечную последовательность 9.

Константы 0.2 и 0.3 в вашей программе также будут приближенными к их истинные ценности. Бывает, что ближайший double до 0.2 больше, чем рациональное число 0.2, но ближайший double до 0.3 меньше, чем рациональное число 0.3. Сумма 0.1 и 0.2 заканчивается выше, чем рациональное число 0.3 и, следовательно, не согласуется с константой в вашем коде.

Достаточно полное рассмотрение арифметических вопросов с плавающей запятой Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой . Для более простого объяснения см. floating-point-gui.de .

20
задан Milor123 29 April 2016 в 00:43
поделиться

3 ответа

Вы можете использовать tf.convert_to_tensor():

import tensorflow as tf
import numpy as np

data = [[1,2,3],[4,5,6]]
data_np = np.asarray(data, np.float32)

data_tf = tf.convert_to_tensor(data_np, np.float32)

sess = tf.InteractiveSession()  
print(data_tf.eval())

sess.close()
21
ответ дан 4Oh4 25 August 2018 в 22:35
поделиться

Вы можете использовать tf.pack ( tf.stack в TensorFlow 1.0.0) для этой цели. Вот как упаковать случайное изображение типа numpy.ndarray в Tensor:

import numpy as np
import tensorflow as tf
random_image = np.random.randint(0,256, (300,400,3))
random_image_tensor = tf.pack(random_image)
tf.InteractiveSession()
evaluated_tensor = random_image_tensor.eval()

UPDATE: чтобы преобразовать объект Python в тензор, вы можете использовать tf.convert_to_tensor .

7
ответ дан Ali 25 August 2018 в 22:35
поделиться

Вы можете использовать заполнители и feed_dict.

Предположим, что у нас есть такие массивы numpy:

trX = np.linspace(-1, 1, 101) 
trY = 2 * trX + np.random.randn(*trX.shape) * 0.33 

Вы можете объявить два заполнителя:

X = tf.placeholder("float") 
Y = tf.placeholder("float")

Затем используйте эти заполнители (X и Y) в вашей модели, стоимость и т. Д .: model = tf.mul (X, w) ... Y ... ...

Наконец, когда вы запускаете модель / стоимость, подавайте массивы numpy с помощью feed_dict:

with tf.Session() as sess:
.... 
    sess.run(model, feed_dict={X: trY, Y: trY})
5
ответ дан Sung Kim 25 August 2018 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: