Tengo dos tensor a:[batch_size, dim]
b:[batch_size, dim]
. Quiero hacer un producto interno para cada par en el lote, generando c:[batch_size, 1]
, dónde c[i,0]=a[i,:].T*b[i,:]
. ¿Cómo?
tensorflow
scikit-learn
svm
cross-validation
feature-selection
bayesian
machine-learning
decision-trees
parameter-estimation
neural-network
convnet
neural-network
regularization
visualization
machine-learning
similarity
python
pandas
indexing
r
data-cleaning
machine-learning
predictive-modeling
data-cleaning
recommender-system
python
sequential-pattern-mining
software-recommendation
r
visualization
gaussian
distribution
machine-learning
data-mining
bigdata
apache-hadoop
predictive-modeling
logistic-regression
sampling
machine-learning
regression
feature-selection
mongodb
neural-network
inception
machine-learning
classification
dataset
databases
logistic-regression
deep-learning
backpropagation
classification
data-mining
multilabel-classification
text-mining
data-cleaning
unsupervised-learning
anomaly-detection
python
r
python
pandas
HenrySky
fuente
fuente
Otra opción que vale la pena ver es
[tf.einsum][1]
: es esencialmente una versión simplificada de la notación de Einstein .Siguiendo junto con los ejemplos de Neil y dumkar:
El primer argumento
einsum
es una ecuación que representa los ejes que se multiplicarán y se sumarán. Las reglas básicas para una ecuación son:En nuestro caso,
ij,ij->i
significa que nuestras entradas serán 2 matrices de igual forma(i,j)
, y nuestra salida será un vector de forma(i,)
.Una vez que lo domines, encontrarás que
einsum
generaliza una gran cantidad de otras operaciones:Desafortunadamente,
einsum
tiene un impacto de rendimiento bastante considerable en comparación con una multiplicación manual + reducción. Cuando el rendimiento es crítico, definitivamente recomendaría seguir con la solución de Neil.fuente
Tomar la diagonal de tf.tensordot también hace lo que quieres, si configuras el eje para, por ejemplo,
He adaptado el ejemplo de Neil Slater:
que ahora también da:
Sin embargo, esto podría ser subóptimo para matrices grandes (ver discusión aquí )
fuente
reduce_sum
)