IT実験のブログ

IT関連のツールの使い方など

freeze_graphツール、summarize_graphツール、label_imageツールを使ってみる

https://github.com/tensorflow/models/tree/r1.13.0/research/slim

こちらのサイトを参考にしながら、前回ビルドしたツールを使ってみます。

slimのディレクトリに移動します。

cd ~/AI/models/research/slim

download_and_convert_flowers.py を少し修正します。

gedit ./datasets/download_and_convert_flowers.py

f:id:itlab7:20200224140015p:plain

ダウンロードするファイルが消えないように、210行目をコメントアウトしました。

flowersのデータをダウンロードして、TFRecordフォーマットに変換します。

python3 download_and_convert_data.py \
    --dataset_name=flowers \
    --dataset_dir="${HOME}/AI/image_classifier/data/flowers"

f:id:itlab7:20200224140541p:plain

フォーマットが変換されました。ダウンロードしたファイルも残っています。 ダウンロードしたファイルの中には5種類の花の画像(jpg)が大量に入っているだけです。

inception v3 のチェックポイントをダウンロードしていきます。

mkdir ${HOME}/AI/image_classifier/checkpoints
wget http://download.tensorflow.org/models/inception_v3_2016_08_28.tar.gz
tar -xvf inception_v3_2016_08_28.tar.gz
mv inception_v3.ckpt ${HOME}/AI/image_classifier/checkpoints
rm inception_v3_2016_08_28.tar.gz

f:id:itlab7:20200224141612p:plain

チェックポイントのダウンロードが完了しました。

GPUが使えない場合は、訓練用のプログラムを少し修正します。

gedit train_image_classifier.py

f:id:itlab7:20200224142447p:plain

43行目のclone_on_cpuをTrueにしました。 これでCPUでも訓練処理を実行できます。

訓練処理を実行します。ただし、今回はお試しなので、maxステップ数を20としています。

python3 train_image_classifier.py \
    --train_dir=${HOME}/AI/image_classifier/train_logs \
    --dataset_name=flowers \
    --dataset_split_name=train \
    --dataset_dir=${HOME}/AI/image_classifier/data/flowers \
    --model_name=inception_v3 \
    --max_number_of_steps=20

f:id:itlab7:20200224144328p:plain

ステップ数20なので、数分で完了しました。

f:id:itlab7:20200224144457p:plain

チェックポイントとGraphDefが生成されています。

Tensorboardで見てみます。

tensorboard --logdir=${HOME}/AI/image_classifier/train_logs

f:id:itlab7:20200224144810p:plain

ステップ数20なので、Lossが大きいです。ステップ数を増やして、訓練をしっかりするとLossが小さくなります。

f:id:itlab7:20200224144933p:plain

GraphDefも生成されていたので、グラフも表示できました。

f:id:itlab7:20200224145450p:plain

グラフを拡大して眺めることもできますが、この辺は難しくて良くわかりません。

生成したチェックポイントの評価をします。お試しなので、maxバッチ数は10としています。

python3 eval_image_classifier.py \
    --alsologtostderr \
    --checkpoint_path=${HOME}/AI/image_classifier/train_logs/model.ckpt-20 \
    --dataset_dir=${HOME}/AI/image_classifier/data/flowers \
    --dataset_name=flowers \
    --dataset_split_name=validation \
    --model_name=inception_v3 \
    --max_num_batches=10

f:id:itlab7:20200224151022p:plain

評価結果が表示されました。お試しなので、あてになりませんが、
eval/Accuracy[0.214]
eval/Recall_5[1]
と表示されています。

freeze_graphツールを使って、GraphDefとチェックポイントを合わせて、FrozenGraphDef形式に変換します。

cd ~/AI/tensorflow
bazel-bin/tensorflow/python/tools/freeze_graph \
  --input_graph=${HOME}/AI/image_classifier/train_logs/graph.pbtxt \
  --input_checkpoint=${HOME}/AI/image_classifier/train_logs/model.ckpt-20 \
  --input_binary=false \
  --output_graph=${HOME}/AI/image_classifier/frozen_flowers.pb \
  --output_node_names=InceptionV3/Predictions/Reshape_1

f:id:itlab7:20200224172003p:plain

python2でビルドしたせいか、エラーが出ました。

python2 にもTensorflow 1.13.1を入れます。

pip2 install tensorflow==1.13.1

もう一度freeze_graphを実行します。

bazel-bin/tensorflow/python/tools/freeze_graph \
  --input_graph=${HOME}/AI/image_classifier/train_logs/graph.pbtxt \
  --input_checkpoint=${HOME}/AI/image_classifier/train_logs/model.ckpt-20 \
  --input_binary=false \
  --output_graph=${HOME}/AI/image_classifier/frozen_flowers.pb \
  --output_node_names=InceptionV3/Predictions/Reshape_1

f:id:itlab7:20200224172425p:plain

FrozenGraphDefが生成されました。

そのFrozenGraphDefに対して、summarize_graphツールを使ってみます。

bazel-bin/tensorflow/tools/graph_transforms/summarize_graph \
  --in_graph=${HOME}/AI/image_classifier/frozen_flowers.pb

f:id:itlab7:20200224173046p:plain

frozen_flowers.pb に関する情報が表示されました。 freeze_graphツール使用時に指定したノード名も表示されています。

label_imageツールを使ってみます。

bazel-bin/tensorflow/examples/label_image/label_image \
  --image=${HOME}/AI/imagenet/sunflower.jpg \
  --input_layer=input \
  --output_layer=InceptionV3/Predictions/Reshape_1 \
  --graph=${HOME}/AI/image_classifier/frozen_flowers.pb \
  --labels=${HOME}/AI/image_classifier/data/flowers/labels.txt \
  --input_mean=0 \
  --input_std=255

f:id:itlab7:20200224173930p:plain

inputがどうのこうのと、なんかエラーが出ています。freeze_graphする時にinputのノードも指定してやらないといけないのでしょうか。この辺がまだ良くわかりません。 label_imageツール自体は使えているようです。

今回はここまでです。

Tensorflow のバージョンを1.13.1にして、freeze_graphツール、summarize_graphツール、label_imageツールをビルドする

https://www.tensorflow.org/install/source?hl=ja

こちらのサイトによると、Tensorflow 1.13.1までしかテスト済みのビルドが無いらしいので、 今回は、Tensorflow 1.15.2から1.13.1に変更します。そして、各種ツールのビルドを行います。

各種ツールをビルドするためには、フリーメモリが18GBほど必要ですので、 一旦Ubuntuを電源オフして、VirtualBoxの設定でメモリを増やして起動しなおします。

f:id:itlab7:20200217111855p:plain

ほとんどギリギリまでメモリを増やして試してみたら、Macが再起動したり不安定になってしまったので10240MB(10GB)としました。

Ubuntu18.04のスワップ領域を増やす - IT実験のブログ

更に、こちらのブログと同様のやり方で、/swapfile3 (4GB) を追加しておきます。

f:id:itlab7:20200221212149p:plain

Ubuntu再起動後、freeコマンドで確認したところ、スワップ領域が約10GBになっていることを確認できました。 フリーメモリは18GBほどあります。これなら大丈夫のはずです。

Tensorflowを1.13.1にします。

pip3 install tensorflow==1.13.1

f:id:itlab7:20200224105004p:plain インストール完了しました。

pip3 list

f:id:itlab7:20200224105124p:plain TensorboardとTensorflow-estimatorのバージョンも変更されています。

Tensorflow 1.13 のソースをダウンロードします。

https://github.com/tensorflow/tensorflow

こちらのサイトにブラウザでアクセスします。

f:id:itlab7:20200224110224p:plain

Branchをr1.13 にします。

「Clone or download」ボタンを押して、「Download ZIP」を押します。

f:id:itlab7:20200224110412p:plain

ダウンロードできました。

ダウンロードしたZIPファイルを ~/AI ディレクトリに移動して、 右クリックして、「ここで展開する」を押します。

f:id:itlab7:20200224110716p:plain

展開されたディレクトリの名前は「tensorflow」に変えておきます。

f:id:itlab7:20200224110745p:plain

中身はこんな感じです。

tensorflow/models もr1.13.0 をダウンロードします。

https://github.com/tensorflow/models

こちらのサイトにブラウザでアクセスします。

先程と同様に、Branchをr1.13.0にして、「Clone or download」ボタンでダウンロードします。

f:id:itlab7:20200224112056p:plain

ダウンロードできました。

先程と同様に、~/AI ディレクトリに移動して展開します。

f:id:itlab7:20200224112322p:plain

展開しました。 以前にダウンロードしたmodelsディレクトリがありますので、このディレクトリの名前を models-master に変えて、今回ダウンロードして展開した物を models という名前に変更します。

f:id:itlab7:20200224112614p:plain

名前変更しました。modelsディレクトリの中身はr.1.13.0のものとなっています。

各種ツールをビルドするためには、bazel 0.19.2が必要らしいのでインストールします。

bazelというビルドツールをUbuntu18.04にインストールする - IT実験のブログ こちらのブログと同様にして bazel 0.19.2 をインストールします。 (2.1.0 が 0.19.2 に置き換わります)

各種ツールをビルドするためのツール群が必要なので、インストールしていきます。

python-dev, python-pipをインストールします。

sudo apt install python-dev python-pip

pip2をアップグレードします。

pip2 install -U --user pip

six, numpy, wheel, setuptools, mock, futureツールをインストールします。

pip2 install -U --user six numpy wheel setuptools mock future>=0.17.1

keras_applicationsをインストールします。

pip2 install -U --user keras_applications==1.0.6 --no-deps

keras_preprocessingをインストールします。

pip2 install -U --user keras_preprocessing==1.0.5 --no-deps

以上で、必要なツール群のインストールは完了です。 エラーメッセージなどは出ていなかったでしょうか。

pip2 list

f:id:itlab7:20200224120104p:plain

このように必要なツールがインストールされていればOKです。

それでは、各種ツールをビルドしていきます。

cd ~/AI/tensorflow/

summarize_graphというツールをビルドします。

bazel build tensorflow/tools/graph_transforms:summarize_graph

f:id:itlab7:20200221222045p:plain

tensorflowのC++のソースがビルドされているようです。 Macのファンが鳴り始めました。

f:id:itlab7:20200224121232p:plain

約4分でビルド完了しました。

続けて、freeze_graphというツールをビルドします。

bazel build tensorflow/python/tools:freeze_graph

f:id:itlab7:20200224125714p:plain

約40分でビルド完了しました。

続けて、label_imageというツールをビルドします。

bazel build tensorflow/examples/label_image:label_image

f:id:itlab7:20200224132254p:plain

約15分でビルド完了しました。

今回はここまでです。

Tensorflowのinceptionという画像認識のexampleを試す(実際に花の画像を認識させる)(失敗2)

今回は、先日(2020/2/15)生成したflowersを認識するDNNモデルを使って、実際に花の画像を認識させてみたいと思います。

先日生成したものは、チェックポイントなので、FrozenGraphDefという形式(pbファイル)に変換する必要があります。

まず、GraphDefをエクスポートするために、訓練処理のプログラムを書き換えて訓練処理をすると同時にGraphDef(pbファイル)のエクスポートもするように修正します。

~/AI/models/research/inception/inception の inception_train.py の335行目に下のコードを挿入します。

    graph_def = sess.graph.as_graph_def()
    tf.train.write_graph(graph_def,"/tmp/","flowers_graph_def.pb",as_text=False)
    tf.train.write_graph(graph_def,"/tmp/","flowers_graph_def_txt.pbtxt",as_text=True)

f:id:itlab7:20200222144154p:plain

訓練処理をする際に GraphDefを /tmp/flowers_graph_def.pb に保存するようにしました。 ついでにテキスト形式のファイルも保存してみます。

すぐ終わるようにmax_stepsを1にして訓練処理を走らせます。

cd ~/AI/models/research/inception
bazel-bin/inception/flowers_train \
   --train_dir="/tmp/flowers_train10/" \
   --data_dir="${HOME}/AI/inception/flowers-data/" \
   --pretrained_model_checkpoint_path="${HOME}/AI/inception-v3-model/inception-v3/model.ckpt-157585" \
   --fine_tune=True \
   --initial_learning_rate=0.001 \
   --input_queue_memory_factor=1 \
   --max_steps=1

f:id:itlab7:20200222145136p:plain

訓練処理が終わりました。

f:id:itlab7:20200222145232p:plain

/tmp にGraphDefファイルが生成されています。 テキスト形式のものもあります。

f:id:itlab7:20200222181057p:plain

今後使うかもしれないので、~/AI/inception にコピーして取っておきました。

FrozenGraphDefを作成するためのツールを実行します。

cd ~/.local/lib/python3.6/site-packages/tensorflow_core/
python3 python/tools/freeze_graph.py \
   --input_graph=/tmp/flowers_graph_def.pb \
   --input_checkpoint=${HOME}/AI/inception/flowers_train/model.ckpt-499 \
   --input_binary=true \
   --output_graph=${HOME}/AI/inception/flowers_frozen_graph_def.pb \
   --output_node_names=save_1/control_dependency

※output_node_namesに指定したsave_1/control_dependency

Tensorflowのinceptionという画像認識のexampleを試す(実際に花の画像を認識させる)(失敗) - IT実験のブログ

こちらのブログでビルドしたsummarize_graphというツールを使って調べました。 このツールを使って一番最後に表示されたノード名を指定しています。

f:id:itlab7:20200222181221p:plain

FrozenGraphDefが作成されました。

f:id:itlab7:20200222181808p:plain

~/AI/models/tutorials/image/imagenet の classify_image.py を ~/AI/inception にコピーして、名前をflowers_classify_image.py に変更しておきます。

そして、このプログラムの内容を下記のように修正します。

main関数の1行目をコメントアウトします。

def main(_):
#  maybe_download_and_extract()
  image = (FLAGS.image_file if FLAGS.image_file else
           os.path.join(FLAGS.model_dir, 'cropped_panda.jpg'))
  run_inference_on_image(image)

63行目を下のように変更します。

          FLAGS.model_dir, 'imagenet_2012_challenge_label_map_proto.pbtxt')
          ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
          FLAGS.model_dir, 'flowers_label_map_proto.pbtxt')

66行目を下のように変更します。

          FLAGS.model_dir, 'imagenet_synset_to_human_label_map.txt')
          ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
          FLAGS.model_dir, 'flowers_label_map.txt')

124行目を下のように変更します。

      FLAGS.model_dir, 'classify_image_graph_def.pb'), 'rb') as f:
          ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      FLAGS.model_dir, 'flowers_frozen_graph_def.pb'), 'rb') as f:

~/AI/inception に下記の2つのファイルを作成します。

flowers_label_map_proto.pbtxt

# -*- protobuffer -*-
# LabelMap
entry {
  target_class: 1
  target_class_string: "n00000001"
}
entry {
  target_class: 2
  target_class_string: "n00000002"
}
entry {
  target_class: 3
  target_class_string: "n00000003"
}
entry {
  target_class: 4
  target_class_string: "n00000004"
}
entry {
  target_class: 5
  target_class_string: "n00000005"
}

flowers_label_map.txt

n00000001    daisy
n00000002   dandelion
n00000003   roses
n00000004   sunflowers
n00000005   tulips

f:id:itlab7:20200222190244p:plain

花の画像を認識するためのプログラムを実行します。

cd ~/AI/inception
python3 flowers_classify_image.py --model_dir=${HOME}/AI/inception --image_file=${HOME}/AI/imagenet/sunflower.jpg

f:id:itlab7:20200222193859p:plain

エラーが出ました。 残念ながら、またしても失敗です。 ちょっと良くわからなくなってきました。 まだまだTensorflowについて勉強不足かもしれません。 また何か進展がありましたら、書きたいと思います。

今回はここまでです。

Ubuntu18.04にgoogle chromeをインストールする(Tensorboardの全機能を正常に動作させたい)

今回は、Ubuntu18.04にgoogle chromeをインストールしてみます。 目的は、Tensorboardの全ての機能を正常に動作させるためです。 Firefoxでも問題なさそうですが、念のためインストールしておきます。

こちらのサイトからchromeをダウンロードします。
Google Chrome ウェブブラウザ

f:id:itlab7:20200220223839p:plain

Chromeをダウンロード」ボタンをクリックします。

そして、「同意してインストール」ボタンをクリックします。

f:id:itlab7:20200220224113p:plain

OK をクリックします。

f:id:itlab7:20200220224250p:plain

しばらくすると、この画面になるので、「インストール」をクリックします。 パスワードの入力を求められたら、Ubuntuにログインする時のパスワードを入力して、「認証」ボタンをクリックします。

f:id:itlab7:20200220224752p:plain

しばらくすると、インストール完了しました。

Chrome をアプリ一覧から起動します。

f:id:itlab7:20200221203959p:plain

既定のブラウザに設定しておきます。

f:id:itlab7:20200220225010p:plain

起動できました。

試しにTensorboardを起動してみます。 下のコマンドを端末から入力して、指定のアドレスにChromeでアクセスします。

tensorboard --logdir=~/AI/inception/flowers_train

f:id:itlab7:20200221204405p:plain

Tensorboardが動きました。

今回はここまでです。

Tensorflowのinceptionという画像認識のexampleを試す(実際に花の画像を認識させる)(失敗)

今回は、先日(2020/2/15)生成したflowersを認識するDNNモデルを使って、実際に花の画像を認識させてみたいと思います。

先日生成したものは、チェックポイントなので、FrozenGraphDefという形式(pbファイル)に変換する必要があります。

まず、inception v3 のGraphDefをエクスポートします。 エクスポートするためのプログラムがあるディレクトリに移動します。

cd ~/AI/models/research/slim

エクスポートするためのプログラムを実行します。

python3 export_inference_graph.py \
   --alsologtostderr \
   --model_name=inception_v3 \
   --output_file=/tmp/inception_v3_inf_graph.pb

FrozenGraphDefを作成するためのツールをダウンロードします。

cd ~/AI

ダウンロードするためにgitというツールを使うので、インストールします。

sudo apt install git

f:id:itlab7:20200216172820p:plain

gitがインストールされました。

gitコマンドでダウンロードします。

git clone https://github.com/tensorflow/tensorflow.git

f:id:itlab7:20200216173831p:plain

f:id:itlab7:20200216173854p:plain

ダウンロードされました。

cd tensorflow

FrozenGraphDefを作成するためのツールをビルドします。 ビルドするためには、bazel 2.0.0が必要らしいのでインストールします。

bazelというビルドツールをUbuntu18.04にインストールする - IT実験のブログ こちらのブログと同様にして bazel 2.0.0 をインストールします。 (2.1.0 が 2.0.0 に置き換わります)

下のコマンドでビルドします。

bazel build tensorflow/python/tools:freeze_graph

f:id:itlab7:20200216194824p:plain

エラーが出ました。numpyがインポートできないようです。

python-pipをインストールします。

sudo apt install python-pip

pip2をupgradeします。

pip2 install --upgrade pip

numpyをインストールします。

pip2 install numpy

builtinsモジュールもビルド時に必要なので、futureパッケージをインストールします。

pip2 install future

concurrentモジュールもビルド時に必要なので、futuresパッケージをインストールします。

pip2 install futures

mockモジュールもビルド時に必要なので、インストールします。

pip2 install mock

keras_preprocessingモジュールもビルド時に必要なので、インストールします。

pip2 install keras_preprocessing

もう一度、下のコマンドでビルドします。

bazel build tensorflow/python/tools:freeze_graph

f:id:itlab7:20200216195929p:plain

思ったより時間かかっていますが、ビルドが進んでいます。 ファンも鳴りっぱなしです。 もしかして、Tensorflow全体をビルドしているのでしょうか。

f:id:itlab7:20200216210610p:plain

約1時間かかりましたが、エラーが出ました。 ネットで調べてみたところ、メモリ不足という情報がありました。 (後でシステムモニターで確認してみたところ、確かにメモリが100%まで使われていました)

一旦Ubuntuを電源オフして、VirtualBoxの設定でメモリを増やして起動しなおします。 /tmp/inception_v3_inf_graph.pb を何処かにコピーしておいて、起動後に/tmpに戻します。

f:id:itlab7:20200217111855p:plain

ほとんどギリギリまでメモリを増やして試してみたら、Macが再起動したり不安定になってしまったので10240MB(10GB)としました。 (一瞬書きかけのブログが消えたかと思いましたが、無事でした。ビルドの方は1からやり直しとなってしまいました。)

Ubuntuを起動して、inception_v3_inf_graph.pb を/tmpに戻します。

端末とシステムモニター以外のアプリを終了し、ビルドしなおします。

cd ~/AI/tensorflow/
bazel build tensorflow/python/tools:freeze_graph

f:id:itlab7:20200217140933p:plain

メモリ かつかつです。

f:id:itlab7:20200217141456p:plain

この後、メモリ不足でまたビルドが途中で終わってしまいました。

Ubuntu18.04のスワップ領域を増やす - IT実験のブログ

こちらのブログのやり方で、/swapfile3 (4GB) を追加して再トライします。

f:id:itlab7:20200217142542p:plain

Ubuntu再起動後、freeコマンドで確認したところ、スワップ領域が約10GBになっていることを確認できました。

下のコマンドで、もう一度ビルドします。 今度こそ、うまく行きますように。

cd ~/AI/tensorflow/
bazel build tensorflow/python/tools:freeze_graph

f:id:itlab7:20200217160657p:plain

ビルド成功しました。

summarize_graph というツールをビルドします。

bazel build tensorflow/tools/graph_transforms:summarize_graph

f:id:itlab7:20200217170841p:plain

すんなりビルドできました。

使ってみます。

bazel-bin/tensorflow/tools/graph_transforms/summarize_graph \
   --in_graph=/tmp/inception_v3_inf_graph.pb

f:id:itlab7:20200217171117p:plain

inception_v3_inf_graph.pb に関する情報が色々表示されました。

FrozenGraphDefを作成するためのツールを実行します。

bazel-bin/tensorflow/python/tools/freeze_graph \
   --input_graph=/tmp/inception_v3_inf_graph.pb \
   --input_checkpoint=${HOME}/AI/inception/flowers_train/model.ckpt-499 \
   --input_binary=true \
   --output_graph=${HOME}/AI/inception/flowers_train/frozen_inception_v3.pb \
   --output_node_names=InceptionV3/Predictions/Reshape_1

f:id:itlab7:20200217200603p:plain

ValueError: No variables to save

というエラーが出ました。

ここで、間違いに気付きました。 インストールしたTensorflowのバージョン(1.15.2)と、gitでダウンロードしたTensorflowのバージョン(最新)が違っていました。

今回は失敗です。 次回は、バージョンを揃えるか、インストール済みのTensorflowの中にあるfreeze_graphを使って、再トライしてみます。

疲れたので、今回はここまでにします。

Tensorboardを使ってみる

今回は、Tensorboardというツールを使ってみます。

準備として、 setuptoolsをアップグレードします。

pip3 install -U setuptools

f:id:itlab7:20200217182414p:plain

エラーが出ていますが、setuptoolsのアップグレード自体は成功しています。

インストールされているツールのリストを出してみます。

pip3 list

f:id:itlab7:20200217182606p:plain

setuptoolsは45.2.0になっていますので、OKです。

Tensorboardを起動します。 logdirには先日訓練したflowersのディレクトリを指定します。

tensorboard --logdir=~/AI/inception/flowers_train

f:id:itlab7:20200217182913p:plain

Tensorboardが起動したようなので、指定のアドレス(この場合、http://itlab7-VirtualBox:6006/)にブラウザでアクセスします。

f:id:itlab7:20200217183505p:plain

lossの値などをグラフ表示してくれます。 訓練のstep数を増やせば、もっとlossが小さくなっていきそうです。

Tensorboardを終わるには、ブラウザを閉じて、端末で CTRL+Cを押します。

今回はここまでです。

Ubuntu18.04のスワップ領域を増やす

今回は、Ubuntu18.04のスワップ領域を増やしたいと思います。 元から1.9GBありますが、4GB追加します。

端末から下のコマンドを実行して、/swapfile2 という名前の4GBのファイルを作成します。

sudo fallocate -l 4G /swapfile2

そのファイルの権限を変更してrootのみ読み書きできるようにします。

sudo chmod 600 /swapfile2

確認してみます。

cd /
ls -all

f:id:itlab7:20200217113657p:plain

/swapfile2 が4GBの大きさで作成され、権限も指定した通りになっています。

/swapfile2 をスワップ領域として設定します。

sudo mkswap /swapfile2

そして、ONにします。

sudo swapon /swapfile2

今のままだと、Ubuntuを再起動するとスワップ領域ではなくなってしまうので、そうならないようにします。

sudo gedit /etc/fstab

f:id:itlab7:20200217114803p:plain

/swapfile の行をコピーして、/swapfile2の行を追記しました。 これでUbuntuを再起動しても、スワップ領域が有効になります。

Ubuntu再起動後、下のコマンドでスワップ領域が増えているか確認します。

free

f:id:itlab7:20200217210351p:plain

スワップ領域が約6GBに増えていることが確認できました。

今回はここまでです。