はじめに ディープラーニングのフレームワークTensorFlowは各種処理をProtocol Buffers経由で外だしすることで、PythonとGPU/分散コンピュータとのスイッチングを減らし、計算を効率化しています。 Protocol Buffersは、Googleの分散コンピューティングを支える技術で、言語非依存、プラットフォーム非依存にデータ構造をシリアライズする仕組みです。現在、C++, C#, GO, Java, Pythonがサポートされています。 TensorFlowは、処理をノードとしてグラフを構築し、一気に計算する仕組みになっています。 グラフの例 以下TensorFlowのグラフがProtocol Buffers形式にシリアライズされる様子を見てみたいと思います。 サンプルプログラム TensorFlowで足し算をしてみます。 初期値0で加算1を3回実行します。 im
![[TensorFlow] Python ⇔ Protocol Buffers ⇔ GPU/分散コンピューティング - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/3f48ed5d137205d5a0069f17ef0f9b9362408fde/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JTVCVGVuc29yRmxvdyU1RCUyMFB5dGhvbiUyMCVFMiU4NyU5NCUyMFByb3RvY29sJTIwQnVmZmVycyUyMCVFMiU4NyU5NCUyMEdQVSUyRiVFNSU4OCU4NiVFNiU5NSVBMyVFMyU4MiVCMyVFMyU4MyVCMyVFMyU4MyU5NCVFMyU4MyVBNSVFMyU4MyVCQyVFMyU4MyU4NiVFMyU4MiVBMyVFMyU4MyVCMyVFMyU4MiVCMCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MzlkZGEzZTIyYzdlY2QwZDM5YTNlNDM1ZTQ1YTUzMjM%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwaGl0b21hdGFnaSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MGUwMmMwYzgwMjExM2UxNDQwYzM1MjY5NjA3NDMwOGE%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Def43bb86784b9ead3611923c937842d5)