/ / Tensorflow: introduzindo uma matriz de tamanho diferente em um espaço reservado - python-3.x, matriz, tensorflow, placeholder

Tensorflow: introduzindo uma matriz de tamanho diferente em um espaço reservado - python-3.x, matriz, tensorflow, placeholder

Eu estou tentando fazer uma operação simples com o fluxo de tensor de multiplicação de matriz, mas eu tenho que usar uma matriz de tamanho variável de suas colunas (como pode ser visto no exemplo abaixo)

import tensorflow as tf

input1 = tf.placeholder("float", [None,None])
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)

with tf.Session() as sess:
print(sess.run([output], feed_dict={input1:[[1,2],[3,4,5]], input2:[2.]}))

O problema é que, quando faço isso, recebo uma mensagem de erro dizendo:

ValueError: definindo um elemento de matriz com uma sequência.

Eu sei que isso pode ser facilmente resolvido adicionando qualquernumber ou None na primeira linha (para produzir uma forma m x n), no entanto, quero treinar dados maiores para uma experiência e não tenho certeza se um 0 pode afetar os dados ou não.

Respostas:

2 para resposta № 1

o tf.placeholder() op define um espaço reservado para um tensor densoPortanto, você deve definir todos os elementos no valor que está tentando alimentar.

Uma alternativa (na versão mais recente do TensorFlow, disponível se você construir a partir da fonte ou baixar uma versão noturna) é usar um tf.sparse_placeholder() op, que permite alimentar um tf.SparseTensor com um tf.SparseTensorValue. Isso permite representar um objeto no qual nem todos os elementos são definidos, mas aqueles que são indefinidos são interpretados como zeros.

Note que o suporte do TensorFlow para dados esparsos e exemplos de tamanhos variáveis ​​ainda é preliminar, e a maioria das operações - como tf.mul()Estão atualmente definidos apenas para tensores densos. Uma abordagem alternativa, que usamos para dados de imagens de tamanho variável, é processar um registro (tamanho variável) de cada vez em um gasoduto de entradaantes de convertê-lo em uma forma constante e usar o funções de lote para fazer um único lote denso.