Nowość w TensorFlow, teraz muszę użyć wartości w symbolu zastępczym przed karmieniem, coś w stylu:
tensor = tf.placeholder(tf.float32, [None, 3])
Mat_items = tf.Variable(tf.random_normal([10,10]))
Mat_users = tf.Variable(tf.random_normal([10,10]))
item_index = tensor[:, 0]
user_index = tensor[:, 1]
rating = tensor[:, 2]
Val = Mat_items[item_index, :]-Mat_users[user_index, :]
podczas napinacz jest symbolem zastępczym z N rzędami 3 kols, pierwsza kolumna i druga kolumna są indeksem odpowiednio dla Mat_items i Mat_users oraz Mat_items Użytkownicy mat są zmienne potrzebne do indeksowania.
Uruchomienie go absolutnie wyrzuci błąd, ponieważ oba item_index, user_index są oba Napinacz nie numeryczne przed karmieniem. Zastanawiam się więc, czy Tensorflow może zrealizować to żądanie? Wszelkie sugestie będą mile widziane! :)
================================================== ======================= Uzupełnienie mojego pytania:
Val
zależy od niektórych kolumn w Tensor
podobnie jak pierwsza kolumna i druga kolumna. Więc kiedy tworzę mój wykres, koduję
Val = Mat_items[item_index, :]-Mat_users[user_index, :]
item_index i user_index to kawałek tensor
i oba są typem tensor
To też spowoduje błąd. Nie wiem, jak zrealizować to żądanie w TensorFlow.
================================================== ======================= Znalazłem rozwiązanie:
tensor = tf.placeholder(tf.float32, [None, 3])
Mat_items = tf.Variable(tf.random_normal([10,10]))
Mat_users = tf.Variable(tf.random_normal([10,10]))
for each in range(batch_number):
item_ind, user_ind = tensor[each, 2], tensor[each, 1]
rating = tensor[each, 1]
Val = Mat_item[item_ind, 0]*Mat_user[user_ind, 0]*rating
Powyższy kod wydaje się działać podczas budowania graghkosztuje zbyt dużo czasu nawet z małym zestawem danych (wielkość partii około 1000 i tylko jedna partia jest podawana do testowania), zbudowanie wykresu kosztuje około 78 sekund, nie jestem pewien, czy to normalne?
Odpowiedzi:
0 dla odpowiedzi № 1Twoje pytanie wydaje się niejasne, ale myślę, że twoje pytanie dotyczy sposobu umieszczenia wartości w symbolu zastępczym. Jeśli chcesz uzyskać wynik z Val
, musisz uzupełnić tensor
z wejściem, ponieważ domyślnie nie zawiera żadnych wartości. Val
zależy również od tensor
w celu obliczenia jego wyniku. Twój wkład musi być tego samego rozmiaru co tensor
. (W tym przypadku załóżmy, że twój sygnał wejściowy to przypadkowy szum input_tensor = numpy.random.uniform(-1, 1, size =(None, 3))
gdzie None jest wartością, którą musisz podać.
Więc po rozpoczęciu sesji wykonaj
output = sess.run(Val, feed_dict = {tensor: input_tensor})
i output
będzie twój wynik