{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# softmax関数の動作確認"
      ],
      "metadata": {
        "id": "8fWhLbrBiHlj"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "2u9G6WaSher-",
        "outputId": "829eff4e-3ed2-4f6a-cec8-1410e5ac2c61",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "元の実数列: [-5 -3  0  1 10]\n",
            "ソフトマックス適用後: [3.05849905e-07 2.25994211e-06 4.53921506e-05 1.23388658e-04\n",
            " 9.99828653e-01]\n",
            "確率の総和: 1.0\n"
          ]
        }
      ],
      "source": [
        "import numpy as np\n",
        "\n",
        "def softmax(x):\n",
        "    \"\"\"\n",
        "    ソフトマックス関数:\n",
        "    すべての実数 x_i に対して exp(x_i) を計算し、その合計で割って確率分布に変換する。\n",
        "    \"\"\"\n",
        "    exp_x = np.exp(x)\n",
        "    return exp_x / np.sum(exp_x)\n",
        "\n",
        "# 任意の実数列を定義 (負の値、正の値、0を含む)\n",
        "values = np.array([-5, -3, 0, 1, 10])\n",
        "\n",
        "# ソフトマックス関数の適用\n",
        "probs = softmax(values)\n",
        "\n",
        "# 出力確認\n",
        "print(\"元の実数列:\", values)\n",
        "print(\"ソフトマックス適用後:\", probs)\n",
        "print(\"確率の総和:\", np.sum(probs))\n"
      ]
    }
  ]
}