You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eli Belash edited this page Aug 31, 2019
·
15 revisions
Tensorflow.NET's is thread-safe, our multithreading model is thread-wide Session and Graph; meaning tf.get_default_graph/session() are unique to the thread they are executed in.
We chose this model because a dominant portion of our api does not accept Graph as an argument, instead
it accesses tf.get_default_graph() to initialize an Operation in it.
This allows cleaner and similar code to Python and still having complete isolation between threads.
Capabilities
Initialize sessions and graphs.
Call your_session.run(...) parallely and in separate threads regardless to the defaults in the current thread.
Limitations
When writing a model, it has to be done in the same thread unless yourgraph.as_default() is called in a different thread.
For example
: You can't start a model and then continue it in a Task unless you call graph.as_default() and session.as_default() before doing so.
Tensorflow's c_api for the most part is thread-safe, calls of status.Check() sometimes to be inside a process-wide lock, for example: