В чем разница между этими двумя тензорами и почему?

Какая разница в измерении или ранге между первыми двумя показанными результатами? Почему я могу добавить эти два (матрицы / векторы)? Это может звучать как наивный вопрос, но я очень стараюсь понять, как работает сложение между тензорами / матрицами. Спасибо. (Я также хотел знать, почему я могу добавить два последних результата. Разве это не две матрицы разных размеров?)

import tensorflow as tf
import numpy as np
W = tf.Variable(tf.zeros([784, 10])) 
x = tf.Variable(tf.zeros([2,784]))
z = tf.matmul(x,W)

Y = tf.Variable([4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0])  

x = tf.Variable(tf.zeros([2,10]))  

model = tf.initialize_all_variables()  

with tf.Session() as session:
    session.run(model)
    print(session.run(z))
    print(session.run(Y)) 
    print(session.run(x))

Результат:

[[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]

[  4.   5.   6.   7.   8.   9.  10.  11.  12.  14.]

[[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]

1 ответ

Я не вижу никаких дополнений, только умножение.

Все, что вы делаете с Y Переменная выводит сам тензор, который содержит заданные вами плавающие значения.

С zВы умножаете эти два тензора вместе. Общая формула для размеров результата умножения матриц имеет вид MxN * OxP = MxP (M и O - строки, N и P - столбцы). Таким образом, для x у вас есть тензор 2x784, умноженный на тензор 784x10. Это (по формуле общей размерности) дает вам тензор с размерами 2x10.

Если вы имели в виду, что вы могли бы сделать сложение после того, как Y а также z, это потому, что библиотеки, такие как tenorflow, обычно применяют широковещательную передачу от одного тензора к другому, если совпадают некоторые измерения. Так что если вы сделали Y + z ты бы получил

[[  4.   5.   6.   7.   8.   9.  10.  11.  12.  14.] 
 [  4.   5.   6.   7.   8.   9.  10.  11.  12.  14.]]

из-за того, что трансляция применяется к числу строк в z.

РЕДАКТИРОВАТЬ: Я просто подумал, что вы просили разницы с точки зрения арифметики х) из-за вещания, z - Y было бы

[[  -4.   -5.   -6.   -7.   -8.   -9.  -10.  -11.  -12.  -14.] 
 [  -4.   -5.   -6.   -7.   -8.   -9.  -10.  -11.  -12.  -14.]]
Другие вопросы по тегам