プロジェクトのシナリオ:
ROS 20.04
Python3.7
TensorFlow2.8
Conda の構成
祖先のコードを使用すると多くの問題が見つかりますが、最終的にはバージョンの問題でもあります。
1) condaをインストールする
感謝: Conda 公式のダウンロードとインストール手順、および conda の使用方法の詳細な紹介 - Datapotumas - Blog Park
https://blog.csdn.net/qq_41101213/article/details/
Conda公式ホームページ: https: //github.com/conda/conda
Conda 公式ダウンロード アドレス: Conda 公式ダウンロード
私は x86_64 Linux システムなので、 https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.shをダウンロードします。
bash Miniconda3-latest-Linux-x86_64.sh
conda の bin ファイルは環境変数に追加されるので、ソースする必要があります。
source ~/.bashrc
2) Python 仮想環境を作成する
# 创建
conda create -n your_env_name python=3.7
3) スイッチ環境
# linux
source activate your_env_name
#若返回系统原本环境,退出conda(或返回上一级环境)
conda deactivate
4) 仮想環境に追加のパッケージをインストールする
conda install -n your_env_name [package]
TensorFlow2.x は、1.x コードの前の変更に従います。
ありがたい:
Tensorflow2.0 と Tensorflow1.x 間の非互換性_Xiao Huiwa のブログ - CSDN ブログ_Tensorflow2 は 1 と互換性がありますか
contrib ライブラリは不安定であるため、より高度なバージョンでは contrib ライブラリが削除されました。
TensorFlow 2.0 は、元の 1.x コードと互換性があり、ほとんど変更を加えずに実行できる tensorflow.compat.v1 コード パッケージを提供します。
意思:
import tensorflow as tf
と置換する:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
移行ツールを使用して 1.x コードを 2.0 に自動的に移行する
TensorFlow 2.0 は、1.x コードを 2.0 コードに自動的に変換するコマンド ライン移行ツールを提供します。このツールは次のように使用します (プログラム ファイル名が first-tf.py であると仮定します)。
tf_upgrade_v2 --infile first-tf.py --outfile first-tf-v2.py
またはフォルダー全体:
tf_upgrade_v2 --intree tf_pose --outtree tf_pose
質問 1: 「_pafprocess」という名前のモジュールがありません
解決:
$ cd ~/tf_pose/pafprocess/
$ swig -python -c++ pafprocess.i
$ python3 setup.py build_ext --inplace
问题2:ModuleNotFoundError: 'tensorflow.contrib' という名前のモジュールがありません
質問部分:
import tensorflow.contrib.slim as slim
tensorflow2 より上のバージョンには contrib 属性はありません
解決:
pip install --upgrade tf_slim --user
上記の質問部分を次のように変更します。
import tf_slim as slim
问题3:AttributeError: モジュール 'tensorflow' には属性 'contrib' がありません、または AttributeError: モジュール 'tensorflow' には属性 'layers' がありません
質問部分:
_init_xavier = tf.contrib.layers.xavier_initializer()
解決:
上記の質問部分を次のように変更します。
_init_xavier = tf.truncated_normal_initializer(stddev=0.1)
问题4:属性エラー: モジュール 'tensorflow_core.compat.v1' には属性 'contrib' がありません
質問部分:
_l2_regularizer_00004 = tf.contrib.layers.l2_regularizer(0.00004)
_l2_regularizer_convb = tf.contrib.layers.l2_regularizer(common.regularizer_conv)
TensorFlow は重複したインターフェイスを削除し、ネットワークを構築するときに基本的に Keras インターフェイス、つまり tf.keras を再利用します。
解決:
_l2_regularizer_00004 = tf.keras.regularizers.l2(0.00004)
_l2_regularizer_convb = tf.keras.regularizers.l2(common.regularizer_conv)
问题5:属性エラー: モジュール 'tensorflow' には属性 'slim' がありません
質問部分:
slim = tf.slim
解決:
import tf_slim as slim
上記のコードを追加し、問題のある部分を削除します
问题6;RuntimeError: モジュールは API バージョン 0xe に対してコンパイルされましたが、このバージョンの numpy
解決:
pip3 install -U numpy
numpy バージョンを更新する