/ / Jak w tensorflow wykorzystać wartość elementu zastępczego przed karmieniem? - python, tensorflow

W tensorflow, jak korzystać z wartości zastępczej przed karmieniem? - python, tensorflow

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 tensori 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 № 1

Twoje 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