Eu tenho dois tensores a:[batch_size, dim]
b:[batch_size, dim]
. Quero fazer um produto interno para cada par do lote, gerando c:[batch_size, 1]
, onde c[i,0]=a[i,:].T*b[i,:]
. Quão?
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
fonte
fonte
Outra opção que vale a pena conferir é
[tf.einsum][1]
- é essencialmente uma versão simplificada do Einstein Notation .Seguindo os exemplos de Neil e dumkar:
O primeiro argumento para
einsum
é uma equação que representa os eixos a serem multiplicados e somados. As regras básicas para uma equação são:No nosso caso,
ij,ij->i
significa que nossas entradas serão 2 matrizes de forma igual(i,j)
e nossa saída será um vetor de forma(i,)
.Depois de pegar o jeito, você verá que
einsum
generaliza um grande número de outras operações:Infelizmente, é
einsum
preciso um desempenho considerável quando comparado a uma multiplicação manual + redução. Onde o desempenho é crítico, eu recomendaria definitivamente continuar com a solução de Neil.fonte
Tomar a diagonal de tf.tensordot também faz o que você deseja, se você definir o eixo como, por exemplo,
Eu adaptei o exemplo de Neil Slater:
que agora também fornece:
Isso pode ser abaixo do ideal para matrizes grandes (veja a discussão aqui )
fonte
reduce_sum
)