TensorFlow: l'heure d'été tenseur n'est pas initialisé

La MNIST For ML Beginners tutoriel me donne une erreur quand je lance print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})). Tout le reste fonctionne très bien.

Erreur et trace:

InternalErrorTraceback (most recent call last)
<ipython-input-16-219711f7d235> in <module>()
----> 1 print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc in run(self, fetches, feed_dict, options, run_metadata)
338     try:
339       result = self._run(None, fetches, feed_dict, options_ptr,
--> 340                          run_metadata_ptr)
341       if run_metadata:
342         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc in _run(self, handle, fetches, feed_dict, options, run_metadata)
562     try:
563       results = self._do_run(handle, target_list, unique_fetches,
--> 564                              feed_dict_string, options, run_metadata)
565     finally:
566       # The movers are no longer used. Delete them.
/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
635     if handle is None:
636       return self._do_call(_run_fn, self._session, feed_dict, fetch_list,
--> 637                            target_list, options, run_metadata)
638     else:
639       return self._do_call(_prun_fn, self._session, handle, feed_dict,
/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc in _do_call(self, fn, *args)
657       # pylint: disable=protected-access
658       raise errors._make_specific_exception(node_def, op, error_message,
--> 659                                             e.code)
660       # pylint: enable=protected-access
661 
InternalError: Dst tensor is not initialized.
[[Node: _recv_Placeholder_3_0/_1007 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/gpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=1, tensor_name="edge_312__recv_Placeholder_3_0", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"]()]]
[[Node: Mean_1/_1011 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_319_Mean_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

Je viens de passé à une version plus récente de CUDA, donc peut-être que cela a quelque chose à faire avec ça? Semble que cette erreur est à propos de la copie d'un tenseur pour le GPU.

Pile: EC2 g2.8xlarge machine, Ubuntu 14.04

Mise à JOUR:

print(sess.run(accuracy, feed_dict={x: batch_xs, y_: batch_ys})) fonctionne très bien. Cela m'amène à penser que le problème est que je suis en train de transférer un énorme tenseur pour le GPU et il ne peut pas le prendre. Petite tenseurs comme un minibatch fonctionnent tout aussi bien.

Mise à JOUR 2:

J'ai compris exactement comment grand les tenseurs d'être à l'origine de ce problème:

batch_size = 7509 #Works.
print(sess.run(accuracy, feed_dict={x: mnist.test.images[0:batch_size], y_: mnist.test.labels[0:batch_size]}))
batch_size = 7510 #Doesn't work. Gets the Dst error.
print(sess.run(accuracy, feed_dict={x: mnist.test.images[0:batch_size], y_: mnist.test.labels[0:batch_size]}))
  • J'ai aussi eu le même problème mais avec un autre modèle. Cependant, il ne se passe lorsque j'essaie de sélectionner le gpu moi-même à l'aide de td.appareil(). Êtes-vous à l'aide de plusieurs Gpu?
InformationsquelleAutor rafaelcosman | 2016-05-19