32 ビット Linux 用の TensorFlow のバージョンはありますか? 利用可能な 64 ビット ホイールしか表示されず、それについてはサイトで何も見つかりませんでした。
4 に答える
TensorFlow ディストリビューションは 64 ビット Linux と Mac OS X でのみテストしており、これらのプラットフォーム用のバイナリ パッケージのみを配布しています。ソースのインストール手順に従って、プラットフォーム用のバージョンをビルドしてみてください。
編集: 1 人のユーザーが、32 ビット ARM プロセッサで TensorFlow を実行するための手順を公開しました。これは、他の 32 ビット アーキテクチャに有望です。これらの手順には、TensorFlow と Bazel を 32 ビット環境で動作させるための便利なヒントが含まれている場合があります。
Google は 32 ビット マシンでの tensorflow をまだサポートしていないようです。
Centos 6.5 を実行している 32 ビット マシンで、「import tensorflow as tf」コマンドの後に次のエラーが表示されます: ImportError: tensorflow/python/_pywrap_tensorflow.so: wrong ELF class: ELFCLASS64
Google が tensorflow の 32 ビット バージョンを配布するまでは、ここで指定されているように、ソースから tensorflow をビルドすることもお勧めします。
この質問への回答からの情報を使用し、32 ビット Linux システムで tensorflow をコンパイルしてインストールするための詳細な手順リストを生成しました。
手順の最新バージョンは、次の github で入手できます: tensorflow-32-bits-linux
Tensorflow を 32 ビット Linux システムにインストールする手順
次の手順を使用して、古い Asus Eee-Pc 1000H に tensorflow をインストールしました。確かに、元の 1 GB の RAM と 80 GB の HDD から、2 GB の RAM と 480 GB の SSD ストレージにアップグレードされました。
これらの手順を次の OS バージョンでテストし、問題なく動作しました。 * Xubuntu 16.04.6 Xenial Xerus 32 ビット。* Xubuntu 18.04.3 Bionic Beaver 32 ビット。* Debian 9.11 Stretch 32 ビット。
便利な Linux システムを選ぶ
2 GB の RAM を搭載した Ubuntu 16.04 (Xenial) と Debian 9.11 (Stretch) システムの両方をテストしました。
4 GB の SWAP スペースを持つようにシステムをセットアップしました。SWAP が 1 GB しかないため、一部のコンパイルが失敗しました。
ディストリビューションにバージョン 8 の Java SDK が含まれていることが重要です: openjdk-8-jdk
Java 8 SDK とビルド ツールをインストールする
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo apt-get install git zip unzip autoconf automake libtool curl zlib1g-dev swig build-essential
Python ライブラリをインストールする
次に、python 3 開発ライブラリと tensorflow に必要な keras モジュールをインストールします。
sudo apt-get install python3-dev python3-pip python3-wheel
sudo python3 -m pip install --upgrade pip
python3 -m pip install --user keras
Python 3 または Python 2 のいずれかを使用して、そのバージョンの tensorflow をコンパイルできます。
ソースから Bazel をインストールしてコンパイルする
ソース コード bazel 0.19.2 ディストリビューションが必要です。それを取得して、新しいフォルダーにインストールできます。
cd $HOME
wget https://github.com/bazelbuild/bazel/releases/download/0.19.2/bazel-0.19.2-dist.zip
mkdir Bazel-0-19.2
cd Bazel-0-19.2
unzip ../bazel-0.19.2-dist.zip
コンパイルする前に、./src/tools/singlejar/mapped_file_posix.inc ファイル ( #error This code for 64 bit Unix. ) の 30 行目を削除する必要があります。これは、64 ビット マシンでない場合にエラーをスローします。この bazel バージョンは 32 ビットで正常に動作します。
vi ./src/tools/singlejar/mapped_file_posix.inc
また、Bazel で使用できる Java メモリを増やしてコンパイルを開始する必要があります。
export BAZEL_JAVAC_OPTS="-J-Xmx1g"
./compile.sh
完了したら (数時間かかる場合があります)、bazel でコンパイルされた実行可能ファイルを現在のユーザーのパスのある場所に移動します。
sudo cp output/bazel /usr/local/bin
ソースから Tensorflow をコンパイルする
フォルダーを作成し、そこに tensorflow の 1.13.2 バージョンを複製します。バージョン 1.14 以降、tensorflow は 64 ビット システムでのみ機能する Intel MKL DNN 最適化ライブラリを使用します。したがって、1.13.2 が 32 ビットで実行される最後のバージョンです。
cd $HOME
mkdir Tensorflow-1.13.2
cd Tensorflow-1.13.2
git clone -b v1.13.2 --depth=1 https://github.com/tensorflow/tensorflow .
コンパイルする前に、64 ビット ライブラリへの参照を 32 ビット ライブラリに置き換えます。
grep -Rl "lib64"| xargs sed -i 's/lib64/lib/g'
テンソルフロー構成を開始します。32 ビット システムでは使用できない、またはサポートされていないいくつかのオプション ライブラリの使用を明示的に無効にする必要があります。
export TF_NEED_CUDA=0
export TF_NEED_AWS=0
./configure
次の点を考慮する必要があります。 * python の場所を指定するように求められた場合。[デフォルトは /usr/bin/python]: Python 3 を使用するには、 /usr/bin/python3と応答する必要があります。 * 使用する Python ライブラリ パスの入力を求められた場合。デフォルトは [/usr/local/lib/python3.5/dist-packages] です。Enter キーを押すだけです* すべての Y/N の質問にはNと応答する必要があります。* bazel オプション "--config=opt" が指定されているときにコンパイル中に使用する最適化フラグを指定するよう求められた場合 [デフォルトは -march=native -Wno-sign-compare]: Enter キーを押すだけです。
ここで、aws、kafka などのオプション コンポーネントを無効にして tensorflow のコンパイルを開始します。
bazel build --config=noaws --config=nohdfs --config=nokafka --config=noignite --config=nonccl -c opt --verbose_failures //tensorflow/tools/pip_package:build_pip_package
すべてがうまくいった場合は、pip パッケージを生成します。
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
そして、pipパッケージをインストールします
python3 -m pip install --user /tmp/tensorflow_pkg/tensorflow-1.13.2-cp35-cp35m-linux_i686.whl
テンソルフローをテストする
次に、小さなテストを実行して、機能することを確認します。次の内容の test.py ファイルを作成します。
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
そして、テストを実行します
python3 test.py
ここに出力があります
Epoch 1/5
60000/60000 [==============================] - 87s 1ms/sample - loss: 0.2202 - acc: 0.9348
Epoch 2/5
60000/60000 [==============================] - 131s 2ms/sample - loss: 0.0963 - acc: 0.9703
Epoch 3/5
60000/60000 [==============================] - 135s 2ms/sample - loss: 0.0685 - acc: 0.9785
Epoch 4/5
60000/60000 [==============================] - 128s 2ms/sample - loss: 0.0526 - acc: 0.9828
Epoch 5/5
60000/60000 [==============================] - 128s 2ms/sample - loss: 0.0436 - acc: 0.9863
10000/10000 [==============================] - 3s 273us/sample - loss: 0.0666 - acc: 0.9800
新しい Tensorflow ライブラリをお楽しみください !!