Betrachten Sie die Berechnung eines inneren Produkts im Tensorfluss als Beispiel. Ich habe versucht, die verschiedenen Möglichkeiten, in TensorFlow in Graphen zu referieren, zu untersuchen, wenn man sie in einer Sitzung mit Feed bewertet. Betrachten Sie den folgenden Code ein:Welche Datentypen können Sie als Schlüssel zum Einspeisen in TensorFlow angeben?
import numpy as np
import tensorflow as tf
M = 4
D = 2
D1 = 3
x = tf.placeholder(tf.float32, shape=[M, D], name='data_x') # M x D
W = tf.Variable(tf.truncated_normal([D,D1], mean=0.0, stddev=0.1)) # (D x D1)
b = tf.Variable(tf.constant(0.1, shape=[D1])) # (D1 x 1)
inner_product = tf.matmul(x,W) + b # M x D1
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
x_val = np.random.rand(M,D)
#print type(x.name)
#print x.name
name = x.name
ans = sess.run(inner_product, feed_dict={name: x_val})
ans = sess.run(inner_product, feed_dict={x.name: x_val})
ans = sess.run(inner_product, feed_dict={x: x_val})
name_str = unicode('data_x', "utf-8")
ans = sess.run(inner_product, feed_dict={"data_x": x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={'data_x': x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={name_str: x_val}) #doesn't work
print ans
Die folgenden Arbeiten:
ans = sess.run(inner_product, feed_dict={name: x_val})
ans = sess.run(inner_product, feed_dict={x.name: x_val})
ans = sess.run(inner_product, feed_dict={x: x_val})
aber die letzten drei:
name_str = unicode('data_x', "utf-8")
ans = sess.run(inner_product, feed_dict={"data_x": x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={'data_x': x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={name_str: x_val}) #doesn't work
nicht. Ich habe überprüft, warum Typ x.name
war, aber es hat immer noch nicht funktioniert, auch wenn ich es in den Typ Python-Interpreter konvertiert, sagte es war. I documentation scheint zu sagen, dass die Tasten Tensoren sein müssen. Allerdings akzeptiert es x.name
, während es kein Tensor ist (es ist ein <type 'unicode'>
), weiß jemand, was los ist?
Ich kann die Dokumentation einfügen sagt, es braucht ein Tensor zu sein:
Das optionale feed_dict Argument kann der Anrufer den Wert von Tensoren in der Grafik außer Kraft zu setzen. Jeder Schlüssel in feed_dict kann eine der folgenden Typen sein:
Wenn der Schlüssel ein Tensor ist, kann der Wert ein Python-Skalar, String, Liste oder numpy ndarray, die als das auf den gleichen dtype umgewandelt werden können Tensor. Wenn der Schlüssel ein Platzhalter ist, wird die Form des Werts außerdem auf Kompatibilität mit dem Platzhalter überprüft. Wenn der Schlüssel ein SparseTensor ist, sollte der Wert ein SparseTensorValue sein. Jeder Wert in feed_dict muss in ein numpliges Array des dtype des entsprechenden Schlüssels konvertiert werden können.