Tensorflow: Comment nourrir un espace réservé variable avec un tenseur?
J'ai un espace réservé variable qui s'attend à un lot d'images de l'entrée:
input_placeholder = tf.placeholder(tf.float32, [None] + image_shape, name='input_images')
Maintenant j'ai 2 sources pour les données d'entrée:
1) un tenseur et
2) certains numpy données.
Pour la numpy données d'entrée, je sais comment le flux de données à l'espace réservé variable:
sess = tf.Session()
mLoss, = sess.run([loss], feed_dict = {input_placeholder: myNumpyData})
Comment puis-je nourrir un tenseur pour que l'espace réservé variable?
mLoss, = sess.run([loss], feed_dict = {input_placeholder: myInputTensor})
me donne une erreur:
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays.
Je ne veux pas convertir le tenseur dans un tableau numpy à l'aide de .eval()
, parce que ce serait ralentir mon programme, est-il un autre moyen?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
feed_dict
pour flux de données dans des espaces réservés. Donc, d'abord, fil de votre graphe de flux de données directement à votremyInputTensor
tenseur de source de données (c'est à dire ne pas utiliser un espace réservé). Ensuite, lorsque vous voulez exécuter avec votre numpy de données, vous pouvez efficacement masquemyImportTensor
avecmyNumpyData
, comme ceci:[Je suis encore à essayer de comprendre comment faire cela avec plusieurs tenseur de sources de données, cependant.]
Cela a été discuté sur GitHub en 2016, et s'il vous plaît vérifier ici. Ici est le point clé par concretevitamin:
Le tenseur comme un objet symbolique coule dans le graphique, alors que les valeurs sont en dehors de cela, alors nous ne pouvons que transmettre les valeurs réelles dans le graphe et la symbolique de l'objet ne peut pas exister à l'extérieur du graphique.
Un moyen de résoudre le problème est de supprimer l'espace Réservé tenseur et le remplacer par votre "myInputTensor".
Vous utilisez la myInputTensor comme source pour les autres opérations, dans le graphique, et lorsque vous voulez en déduire le graphe avec votre np tableau en entrée de données, vous permettra de nourrir une valeur à ce tenseur directement.
Voici un exemple rapide:
Cela fonctionne pour moi dans la dernière version...peut-être que vous avez d'anciennes version de TF?
feed_dict={a: someTensorObject}
feed_dict
est uniquement pour l'alimentation des données. Si vous voulez nourrir un tenseur, l'utilisation régulière TensorFlow API. C'est à dire,tf.add(a,b)
"flux"a
etb
entf.add
. Vous voulez probablementsess.run(a.assign(someTensorObject))