[落とし穴記録] tensorflow 1.x から 2.x へのアップデート時に遭遇した落とし穴 && condad の基本的な使い方

プロジェクトのシナリオ:

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-l​​atest-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 バ​​ージョンを更新する

おすすめ

転載: blog.csdn.net/weixin_44362628/article/details/124627633