являются тензорными операциями поточечно? - PullRequest
0 голосов
/ 06 февраля 2019

Если я сделаю следующее:

r = (x - mn) / std

где x имеет форму (batchSize, 100), mn и std имеют длину (1, 100)

Являются ливычитание и деление сделано точечно?Я ожидал бы, что r будет (batchSize, 100).

Я не могу исследовать фигуры напрямую, потому что использование tf.keras.batch_flatten скрывает фигуры.

Например:

x.shape
TensorShape([Dimension(None), Dimension(314), Dimension(314), Dimension(8)])

x = K.batch_flatten(x)
<tf.Tensor 'conv2d_1/activity_regularizer/Reshape_2:0' shape=(?, ?) dtype=float32>

x.shape
TensorShape([Dimension(None), Dimension(None)])

1 Ответ

0 голосов
/ 06 февраля 2019

Все, что касается Keras и Tensorflow, совместимо с Numpy.Итак, давайте посмотрим.

x = np.array([1,2,3,4,5])
m = np.array([1,1,1,1,1])
n = np.array([5,4,3,2,1])
std = 10
m_times_n = m * n
# [5 4 3 2 1]
x_minus_mn = x - m_times_n
# [-4 -2  0  2  4]
r = x_minus_mn / std
# [-0.4 -0.2  0.   0.2  0.4]

Так что они точечные.Или давайте посмотрим, что происходит в Tensorflow:

tf.enable_eager_execution()
x = tf.constant([1,2,3,4,5])
m = tf.constant([1,1,1,1,1])
n = tf.constant([5,4,3,2,1])
std = tf.constant(10)
m_times_n = m * n
# tf.Tensor([5 4 3 2 1], shape=(5,), dtype=int32)
x_minus_mn = x - m_times_n
# tf.Tensor([-4 -2  0  2  4], shape=(5,), dtype=int32)
r = x_minus_mn / std
# tf.Tensor([-0.4 -0.2  0.   0.2  0.4], shape=(5,), dtype=float64)

Также поточечно.


Также в своем посте вы упомянули, что у вас есть проблемы с tf.keras.batch_flatten.Получившаяся форма (?, ?) основана на способе работы tf.keras.batch_flatten.Давайте посмотрим:

# Assuming we have 5 images, with 320x320 size, and 3 channels
X = tf.ones((5, 320,320, 3))
flatten = tf.keras.backend.batch_flatten(X)
flatten.shape
# (5, 307200)

Взято из документации:

Превратить тензор nD в 2D-тензор с таким же 0-м измерением.

И мы видим точную вещь.0th (batch_size) был сохранен, в то время как все другие измерения были сжаты так, что результирующий тензор является 2D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...