/ / Tensorflow: wprowadzenie macierzy różnej wielkości w symbolu zastępczym - python-3.x, macierz, tensorflow, symbol zastępczy

Tensorflow: wprowadzenie macierzy różnej wielkości w miejscu wypełnienia - python-3.x, matrix, tensorflow, placeholder

Próbuję wykonać prostą operację z przepływem tensorowym mnożenia macierzy, ale muszę użyć macierzy o zmiennej wielkości jej kolumn (jak można to zobaczyć w poniższym przykładzie)

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.]}))

Chodzi o to, że gdy to zrobię, pojawia się komunikat o błędzie:

ValueError: ustawienie elementu tablicy z sekwencją.

Wiem, że można to łatwo rozwiązać, dodając dowolneliczba lub Brak w pierwszym wierszu (w celu uzyskania kształtu m x n), jednak chcę wytrenować większe dane do eksperymentu i nie jestem pewien, czy 0 może wpłynąć na dane, czy nie.

Odpowiedzi:

2 dla odpowiedzi № 1

The tf.placeholder() op definiuje symbol zastępczy dla gęsty tensor, więc musisz zdefiniować wszystkie elementy w wartości, którą próbujesz podać.

Alternatywą (w najnowszej wersji TensorFlow, dostępnej w przypadku kompilacji ze źródła lub pobrania wersji nocnej) jest użycie tf.sparse_placeholder() op, który pozwala nakarmić tf.SparseTensor z a tf.SparseTensorValue. Pozwala to reprezentować obiekt, w którym nie wszystkie elementy są zdefiniowane, ale te, które nie są zdefiniowane, są interpretowane jako zera.

Zauważ, że obsługa TensorFlow dla rzadkich danych i przykładów o zmiennej wielkości jest nadal wstępna, a większość operacji - takich jak tf.mul()- są obecnie zdefiniowane tylko dla gęstych tensorów. Alternatywnym podejściem, którego używamy do danych obrazu o zmiennej wielkości, jest przetwarzanie jednego rekordu (o zmiennej wielkości) na raz w rurociąg wejściowy, przed przekształceniem go w stały kształt i użyciem funkcje wsadowe zrobić jedną gęstą partię.