STEP 6:TensorFlow/Kerasのインストールと環境構築

🧠 STEP 6: TensorFlow/Kerasの環境構築

Google Colabを使ってディープラーニングの実行環境を準備しよう

📋 このステップで学ぶこと

  • TensorFlowとKerasとは何か?その関係は?
  • Google Colabの使い方(GPUの設定方法)
  • ⚠️ Google Colab制限事項と対策(超重要!)
  • GPUが正しく設定されているかの確認方法
  • テンソル(Tensor)の基本操作

🎯 1. TensorFlow と Keras とは?

1-1. TensorFlow(テンソルフロー)とは?

TensorFlowは、Googleが開発したオープンソースの機械学習フレームワークです。
世界中で最も使われているディープラーニングフレームワークの1つです。

🔧 TensorFlowの特徴
  • 開発元:Google Brain チーム
  • リリース:2015年
  • 特徴1:研究から本番環境まで一貫して使える
  • 特徴2:GPU/TPUで高速計算ができる
  • 特徴3:スマートフォンやWebブラウザでも動作可能

1-2. Keras(ケラス)とは?

Kerasは、ニューラルネットワークを簡単に構築するためのAPIです。
TensorFlowの上で動作し、複雑な操作を数行のコードで書けるようにしてくれます。

🎨 Kerasの特徴
  • 開発者:François Chollet(Googleのエンジニア)
  • リリース:2015年
  • 特徴1:シンプルで直感的なAPI
  • 特徴2:初心者でも扱いやすい
  • 特徴3:TensorFlow 2.0以降は公式に統合

1-3. TensorFlowとKerasの関係

🤝 2つの関係を理解しよう

TensorFlowとKerasは「車のエンジンとハンドル」のような関係です。

  • TensorFlow = エンジン(複雑だが高性能)
  • Keras = ハンドル(簡単に操作できる)

以下の図は横スクロールできます。

【TensorFlowとKerasの階層構造】 ┌─────────────────────────────────────┐ │ あなた(プログラマー) │ └─────────────┬───────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ Keras API(高レベル) │ ← 初心者はここから! │ ・簡単にモデルを作れる │ 数行でニューラルネットワークが書ける │ ・model.fit() で学習開始 │ └─────────────┬───────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ TensorFlow(低レベル) │ ← 研究者・上級者向け │ ・細かい制御が可能 │ カスタム実装に使う │ ・テンソル演算を直接記述 │ └─────────────┬───────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ GPU / CPU(ハードウェア) │ ← 実際の計算をする └─────────────────────────────────────┘
💡 このコースではKeras APIを使います

Kerasを使えば、ニューラルネットワークを数行のコードで構築できます。
TensorFlowの複雑な部分はKerasが隠してくれるので、初心者でも安心です。

インポート方法:

# TensorFlowに統合されたKerasを使う(推奨) from tensorflow import keras from tensorflow.keras import layers # または直接インポート import tensorflow as tf model = tf.keras.Sequential([…])

☁️ 2. Google Colabの使い方

2-1. Google Colaboratoryとは?

Google Colab(コラボ)は、Googleが提供する無料のクラウド型Python実行環境です。
ブラウザだけで、高性能なGPUを使ってディープラーニングができます。

🌐 Google Colabのメリット
  • 無料でGPUが使える!(通常、GPUは数十万円)
  • インストール不要(ブラウザだけでOK)
  • TensorFlow/Kerasが最初から入っている
  • Googleアカウントがあればすぐ使える
  • Google Driveと連携できる

2-2. Google Colabの始め方(ステップバイステップ)

📝 ステップ1:Google Colabにアクセス

ブラウザで以下のURLにアクセスします:
https://colab.research.google.com/

📝 ステップ2:Googleアカウントでログイン

Googleアカウントでログインします。
アカウントがない場合は、無料で作成できます。

📝 ステップ3:新しいノートブックを作成

画面左上の「ファイル」→「ノートブックを新規作成」をクリック。
新しいノートブック(.ipynbファイル)が作成されます。

📝 ステップ4:GPUを有効にする(超重要!)

この設定をしないと、GPUが使えず学習が非常に遅くなります。

  1. 画面上部の「ランタイム」メニューをクリック
  2. 「ランタイムのタイプを変更」を選択
  3. 「ハードウェア アクセラレータ」を「GPU」に変更
  4. 「保存」ボタンをクリック

2-3. 基本操作を覚えよう

📝 コードの実行方法(3つの方法)
  • 方法1:Shift + Enter(実行して次のセルへ移動)
  • 方法2:Ctrl + Enter(実行して同じセルにとどまる)
  • 方法3:セル左の再生ボタン(▶)をクリック
# セルにコードを書いて実行してみよう! print(“Hello, Deep Learning!”) print(“Google Colabへようこそ!”)
実行結果:
Hello, Deep Learning!
Google Colabへようこそ!
💡 Google Colabの2種類のセル
  • コードセル:Pythonコードを書いて実行する
  • テキストセル:説明やメモをMarkdown形式で書く

「+ コード」ボタンでコードセル、「+ テキスト」ボタンでテキストセルを追加できます。

⚠️ 3. Google Colab制限事項と対策(超重要!)

Google Colabは無料で素晴らしいサービスですが、いくつかの制限があります。
これを知らないと、学習中に困ることがあるので、しっかり理解しましょう!

3-1. 制限1:連続使用時間制限

⏰ 最大12時間で自動切断される

制限の内容:

  • 連続して使用できるのは最大12時間
  • アイドル状態(何も実行しない)が90分続くと切断
  • 切断されると、すべての変数・メモリがクリアされる

対策:

  • 長時間学習が必要な場合は、epochを分割する
  • 定期的にコードを実行してアイドル状態を回避
  • モデルを定期的に保存する(ModelCheckpoint、次のパートで学習)

3-2. 制限2:GPU割り当て制限

🎮 GPUが必ず使えるとは限らない

制限の内容:

  • GPUを使いすぎると、次回からCPUのみに制限されることがある
  • 混雑時はGPU割り当てが受けられないことがある
  • 割り当てられるGPUの種類はランダム(T4、K80など)

対策:

  • 混雑時間帯を避ける(日本時間19〜23時は混みやすい)
  • GPUを使わない作業(データ前処理など)はCPUで実行
  • 使い終わったらセッションを確実に終了する

3-3. 制限3:メモリ制限

💾 メモリに上限がある

制限の内容:

  • RAM:約12GB(変動あり)
  • GPUメモリ:約15GB(T4の場合、変動あり)
  • メモリを使い切ると、ランタイムがクラッシュする

対策:

  • batch_sizeを小さくする(32 → 16 → 8 と段階的に)
  • 大きな画像は事前にリサイズする
  • 不要な変数は削除する(del 変数名)
💡 batch_sizeとは?

一度にGPUに送り込むデータの数です。
batch_size=32なら、32枚の画像を同時に処理します。

メモリ不足エラーが出たら
batch_size=32 → 16 → 8 と半分ずつ減らすと解決することが多いです。

3-4. 制限4:ストレージの一時性(最も重要!)

📁 セッション終了でファイルが消える!

制限の内容:

  • Colabのファイルシステムは一時的
  • セッション終了(12時間経過、手動終了など)ですべて消える
  • 苦労して学習したモデルも消えてしまう

対策:Google Driveにマウントする(必須!)

3-5. Google Driveをマウントする方法

📝 コードの解説

from google.colab import drive

Google Colabのdriveモジュールをインポートします。

drive.mount(‘/content/drive’)

Google Driveを「/content/drive」というパスにマウント(接続)します。
初回実行時は、Googleアカウントの認証が求められます。

# Google Driveをマウント(接続) from google.colab import drive drive.mount(‘/content/drive’) # これで「/content/drive/MyDrive/」がGoogle Driveのルートになる
実行結果(初回):
Mounted at /content/drive

※ 初回は認証画面が表示されます。
  「Googleアカウントへのアクセスを許可」してください。
📝 モデルをGoogle Driveに保存する方法

学習したモデルは、Google Driveに保存すれば永続的に残ります。

# モデルをGoogle Driveに保存 model.save(‘/content/drive/MyDrive/models/my_model.h5’) # Google Driveから読み込み from tensorflow import keras model = keras.models.load_model(‘/content/drive/MyDrive/models/my_model.h5’)

3-6. 無料版とColab Proの比較

項目 無料版 Colab Pro($9.99/月)
連続使用時間 最大12時間 最大24時間
GPU 標準GPU(T4、K80) 高速GPU優先(V100、A100)
メモリ 約12GB RAM 約25GB RAM
GPU割り当て 混雑時は割り当てなし 優先的に割り当て
💡 無料版でも十分学習できます!

このコースの内容は、無料版で問題なく学習できます
制限を理解して、上手に使いこなしましょう!

本格的にディープラーニングを仕事で使う場合は、Colab Proを検討してください。

⚙️ 4. GPU設定の確認

4-1. GPUが有効になっているか確認する

GPUを有効に設定しても、本当に使えているか確認しましょう。

📝 コードの解説

import tensorflow as tf

TensorFlowライブラリをtfという名前でインポートします。

tf.__version__

TensorFlowのバージョンを確認します。

tf.config.list_physical_devices(‘GPU’)

利用可能なGPUのリストを取得します。
リストが空([])なら、GPUが使えていません。

import tensorflow as tf # TensorFlowのバージョンを確認 print(“TensorFlowバージョン:”, tf.__version__) # GPUが利用可能か確認 gpus = tf.config.list_physical_devices(‘GPU’) print(“GPU利用可能:”, gpus) # 結果を分かりやすく表示 if gpus: print(“\n✅ GPUが利用可能です!”) for gpu in gpus: print(f” GPU名: {gpu.name}”) else: print(“\n⚠️ GPUが利用できません”) print(” → 「ランタイム」→「ランタイムのタイプを変更」でGPUを選択してください”)
実行結果(GPU有効の場合):
TensorFlowバージョン: 2.15.0
GPU利用可能: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

✅ GPUが利用可能です!
  GPU名: /physical_device:GPU:0
実行結果(GPU無効の場合):
TensorFlowバージョン: 2.15.0
GPU利用可能: []

⚠️ GPUが利用できません
  → 「ランタイム」→「ランタイムのタイプを変更」でGPUを選択してください

4-2. GPUの詳細情報を確認する

📝 nvidia-smiコマンド

NVIDIA製GPUの詳細情報を表示するコマンドです。
先頭の「!」はColabでシェルコマンドを実行する記号です。

# GPUの詳細情報を表示 !nvidia-smi

以下の出力は横スクロールできます。

実行結果(例): +—————————————————————————–+ | NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 | |——————————-+———————-+———————-+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | |===============================+======================+======================| | 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 | | N/A 45C P0 28W / 70W | 0MiB / 15360MiB | 0% Default | +——————————-+———————-+———————-+ 重要な情報: ・GPU Name: Tesla T4(GPUの種類) ・Memory: 0MiB / 15360MiB(使用中 / 最大メモリ)
💡 GPUの種類について
  • Tesla T4:最も一般的(メモリ15GB)、無料版でよく割り当てられる
  • Tesla K80:古いGPU(メモリ12GB)、少し遅い
  • Tesla P100:やや高速(Colab Proで出やすい)
  • Tesla V100、A100:最高性能(Colab Proで出やすい)

どのGPUが割り当てられるかはランダムです。
無料版では主にT4またはK80が割り当てられます。

🔢 5. テンソル(Tensor)の基本操作

5-1. テンソルとは?

テンソル(Tensor)とは、多次元配列のことです。
TensorFlowという名前の「Tensor」は、まさにこのテンソルから来ています。

💡 テンソルの次元を理解しよう
  • 0次元(スカラー):ただの数字 → 5
  • 1次元(ベクトル):数字の列 → [1, 2, 3]
  • 2次元(行列):表形式 → [[1,2], [3,4]]
  • 3次元:画像など → 高さ × 幅 × 色チャンネル
  • 4次元:画像のバッチ → バッチ数 × 高さ × 幅 × 色

以下の図は横スクロールできます。

【テンソルの次元を視覚的に理解】 0次元(スカラー): 5 ↑ ただの数字 1次元(ベクトル): [1, 2, 3, 4, 5] ↑ 数字が1列に並ぶ 2次元(行列): [[1, 2, 3], [4, 5, 6]] ↑ 数字が縦横に並ぶ(2行3列) 3次元(画像): 高さ × 幅 × 色(RGB) 例: 28 × 28 × 3 ↑ 28×28ピクセルのカラー画像 4次元(バッチ): バッチ数 × 高さ × 幅 × 色 例: 32 × 28 × 28 × 3 ↑ 32枚の画像をまとめて処理

5-2. テンソルを作成する

📝 コードの解説

tf.constant(値)

値からテンソルを作成します。constantは「定数」の意味で、
作成後は値を変更できないテンソルになります。

import tensorflow as tf # ===== 0次元テンソル(スカラー)===== scalar = tf.constant(42) print(“スカラー:”, scalar) print(“形状:”, scalar.shape) # () は0次元を意味する print() # ===== 1次元テンソル(ベクトル)===== vector = tf.constant([1, 2, 3, 4, 5]) print(“ベクトル:”, vector) print(“形状:”, vector.shape) # (5,) は要素5個の1次元 print() # ===== 2次元テンソル(行列)===== matrix = tf.constant([[1, 2, 3], [4, 5, 6]]) print(“行列:”) print(matrix) print(“形状:”, matrix.shape) # (2, 3) は2行3列
実行結果:
スカラー: tf.Tensor(42, shape=(), dtype=int32)
形状: ()

ベクトル: tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)
形状: (5,)

行列:
tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
形状: (2, 3)

5-3. shapeの読み方

📐 shapeの意味を理解しよう

shape=() → 0次元(スカラー)
shape=(5,) → 1次元、要素数5
shape=(2, 3) → 2次元、2行3列
shape=(2, 3, 4) → 3次元、2×3×4
shape=(32, 28, 28, 3) → 4次元、32枚の28×28ピクセルRGB画像

5-4. テンソルの演算

import tensorflow as tf # 2つのテンソルを作成 a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # ===== 四則演算 ===== print(“加算 (a + b):”, tf.add(a, b)) # または a + b print(“減算 (a – b):”, tf.subtract(a, b)) # または a – b print(“乗算 (a * b):”, tf.multiply(a, b)) # または a * b print(“除算 (a / b):”, tf.divide(a, b)) # または a / b
実行結果:
加算 (a + b): tf.Tensor([5 7 9], shape=(3,), dtype=int32)
減算 (a - b): tf.Tensor([-3 -3 -3], shape=(3,), dtype=int32)
乗算 (a * b): tf.Tensor([ 4 10 18], shape=(3,), dtype=int32)
除算 (a / b): tf.Tensor([0.25 0.4  0.5 ], shape=(3,), dtype=float64)

5-5. 行列の積(重要!)

ニューラルネットワークでは、行列の積が頻繁に使われます。

import tensorflow as tf # 2×2の行列を2つ作成 matrix1 = tf.constant([[1, 2], [3, 4]]) matrix2 = tf.constant([[5, 6], [7, 8]]) # 行列の積(matmul = matrix multiplication) result = tf.matmul(matrix1, matrix2) print(“行列の積:”) print(result)
実行結果:
行列の積:
tf.Tensor(
[[19 22]
 [43 50]], shape=(2, 2), dtype=int32)
📐 行列の積の計算方法

[[1, 2], [[5, 6], [[1×5+2×7, 1×6+2×8], [[19, 22],
 [3, 4]] × [7, 8]] = [3×5+4×7, 3×6+4×8]] = [43, 50]]

5-6. NumPyとの変換

NumPy配列とTensorFlowテンソルは、簡単に相互変換できます。

import tensorflow as tf import numpy as np # TensorFlow テンソル → NumPy 配列 tf_tensor = tf.constant([1, 2, 3]) numpy_array = tf_tensor.numpy() # .numpy() で変換 print(“NumPy配列:”, numpy_array, type(numpy_array)) # NumPy 配列 → TensorFlow テンソル numpy_array = np.array([4, 5, 6]) tf_tensor = tf.constant(numpy_array) # tf.constant() で変換 print(“TFテンソル:”, tf_tensor)
実行結果:
NumPy配列: [1 2 3] <class 'numpy.ndarray'>
TFテンソル: tf.Tensor([4 5 6], shape=(3,), dtype=int64)
💡 テンソルの重要性

ディープラーニングでは、すべてのデータがテンソルとして扱われます。

・画像 → 3次元テンソル(高さ × 幅 × 色)
・テキスト → 2次元テンソル(文の数 × 単語数)
・音声 → 2次元テンソル(時間 × 周波数)

次のステップから、このテンソルを使ってニューラルネットワークを構築していきます!

📝 STEP 6 のまとめ

✅ このステップで学んだこと
  • TensorFlowはGoogleの機械学習フレームワーク
  • KerasはTensorFlowの高レベルAPIで、簡単にモデルを作れる
  • Google Colabは無料でGPUが使えるクラウド環境
  • Colabには制限がある(12時間、GPU割り当て、メモリ、ストレージ)
  • Google Driveマウントでファイルを永続保存できる
  • テンソルは多次元配列で、ディープラーニングの基本データ構造
💡 特に覚えておきたい3つのポイント
  1. 12時間で切断される → モデルを定期的に保存する
  2. ファイルは消える → Google Driveにマウントして保存
  3. メモリ不足が起きたら → batch_sizeを32→16→8と減らす

次のSTEP 7では、Kerasの基本APIを学び、
実際にニューラルネットワークを構築する方法を理解しましょう!

📝 練習問題

問題1 やさしい

TensorFlowとKerasの関係

TensorFlowとKerasの関係について正しいものを選んでください。

  • A. Kerasは TensorFlow と別の独立したフレームワークである
  • B. Keras は TensorFlow の高レベルAPIである
  • C. TensorFlow は Keras の一部である
  • D. Keras を使うには別途インストールが必要
正解:B

なぜBが正解なのか?

KerasはTensorFlowの高レベルAPIです。
「高レベル」とは、複雑な操作を簡単なコードで書けるという意味です。

【階層関係】 あなた ↓ 簡単なコードで指示 Keras(高レベルAPI) ↓ 複雑な処理を代行 TensorFlow(低レベル) ↓ GPU/CPU

他の選択肢の解説:

Aが間違い:以前は独立したライブラリでしたが、TensorFlow 2.0以降は公式に統合されています。

Cが間違い:逆です。KerasがTensorFlowの一部(API)として動作します。

Dが間違い:TensorFlow 2.0以降はKerasが組み込まれているので、別途インストールは不要です。

問題2 やさしい

Google Colabの制限

Google Colabの無料版について正しくないものを選んでください。

  • A. 連続使用時間は最大12時間
  • B. セッション終了後もファイルは永続的に保存される
  • C. アイドル状態が90分続くと切断される
  • D. GPUが必ず使えるとは限らない
正解:B

なぜBが正しくないのか?

Google Colabのファイルシステムは一時的です。
セッションが終了すると(12時間経過、手動終了など)、すべてのファイルが消えます

対策:Google Driveをマウントする

from google.colab import drive drive.mount(‘/content/drive’) # Google Driveにファイルを保存すれば永続的に残る model.save(‘/content/drive/MyDrive/models/my_model.h5’)

他の選択肢の解説:

A、C、Dはすべて正しい記述です。これらの制限を理解して、上手にColabを使いましょう。

問題3 ふつう

メモリ不足エラーの対策

Google Colabでメモリ不足エラーが発生した場合、最も効果的な対策を選んでください。

  • A. ランタイムを再起動する
  • B. batch_size を小さくする(例: 32 → 16)
  • C. より大きな画像サイズを使う
  • D. epoch数を増やす
正解:B

なぜBが最も効果的なのか?

batch_sizeは、一度にGPUメモリに載せるデータの数です。
これを小さくすると、メモリ使用量が直接的に減ります。

【batch_sizeとメモリの関係】 batch_size=32 → メモリ使用量: 大 batch_size=16 → メモリ使用量: 中(半分) batch_size=8 → メモリ使用量: 小(1/4) → メモリ不足が起きたら、32 → 16 → 8 と半分ずつ減らす

他の選択肢の解説:

Aが不十分:再起動しても、同じコードを実行すれば同じエラーが再発します。

Cが逆効果:画像サイズを大きくすると、メモリ使用量が増えてしまいます。

Dが無関係:epoch数は学習の繰り返し回数で、メモリ使用量には影響しません。

問題4 ふつう

テンソルの形状

以下のコードで作成されるテンソルの形状(shape)はどれですか?

tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]] ])
  • A. (2, 2)
  • B. (2, 2, 2)
  • C. (4, 2)
  • D. (8,)
正解:B

shapeの読み方

このテンソルは3次元で、形状は(2, 2, 2)です。

【構造を分解して理解】 最も外側のリスト: 2つの要素 ├── [[1, 2], [3, 4]] ← 1つ目の2×2行列 └── [[5, 6], [7, 8]] ← 2つ目の2×2行列 各行列の構造: ├── [1, 2] ← 1行目(2要素) └── [3, 4] ← 2行目(2要素) したがって shape = (2, 2, 2) ↑ ↑ ↑ │ │ └─ 各行の要素数 │ └──── 各ブロックの行数 └─────── ブロック数

確認方法:

print(tensor.shape) # (2, 2, 2)
問題5 むずかしい

GPUとCPUの使い分け

以下の作業のうち、CPUで実行すべきものを選んでください。

  • A. ニューラルネットワークの学習(model.fit)
  • B. データの前処理(正規化、リサイズなど)
  • C. 大規模な行列演算
  • D. 画像の推論(model.predict)
正解:B

なぜBがCPU向きなのか?

データの前処理(ファイル読み込み、リサイズ、正規化など)は、CPUで十分な処理です。

【GPUとCPUの得意分野】 GPU(並列処理が得意): ・大量のデータを同時に計算 ・行列演算(ニューラルネットワークの本体) ・学習(model.fit)、推論(model.predict) CPU(逐次処理が得意): ・ファイルの読み込み ・データの前処理(リサイズ、正規化) ・条件分岐が多い処理

効率的なGPU使用法:

  1. データ前処理 → CPUで実行
  2. ランタイムをGPUに変更
  3. モデルの学習・推論 → GPUで実行
  4. 学習終了後はセッションを終了(GPU節約)

他の選択肢の解説:

A、C、Dは大量の並列計算が必要なので、GPUで実行すべきです。
特にmodel.fit()(学習)はGPUがないと非常に時間がかかります。

📝

学習メモ

ディープラーニング基礎 - Step 6

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE