教育における人工知能の応用 pytorch フレームワークに基づく 1 モデル トレーニング。数学トピック グラフィックスのインテリジェントな分類に使用されます。

みなさん、こんにちは。今日は教育における人工知能の応用を紹介します 1 - pytorch フレームワークの下でのモデル トレーニングに基づいて、数学の問題におけるグラフィックスのインテリジェントな分類に使用されます。この記事では、CNN アルゴリズムを使用して自動的に分類し、数学の問題のグラフィックを認識します。このアプリケーションは、生徒が数学関連の問題をよりよく理解し、解決するのに役立ちます。CNN の数学グラフィックスのインテリジェントな分類機能に基づいて、教育分野はよりインテリジェントでパーソナライズされた学習支援を提供し、生徒の数学グラフィックスを認識して理解する能力を向上させ、学習効果を向上させることができます。

記事ディレクトリ

プロジェクトの紹介
1. 準備作業
1. ライブラリのインポート
2. データセットの読み込み
2. CNN モデルの構築
3. トレーニング モデルの機能
4. トレーニング モデルと結果
5. まとめ

プロジェクト紹介

CNN アルゴリズムを使用して数学トピック内のグラフィックスを自動的に分類する主な手順は次のとおりです。

1. データ収集: まず、数学トピックの大量のグラフィック データをトレーニング セットとして収集する必要があります。これらのデータには、三角形、正方形、円、放物線など、さまざまな数学トピックで一般的に見られるグラフィックスが含まれる場合があります。

2. データの前処理: データ収集後、グラフィックを前処理する必要があります。これには、画像を数値行列表現に変換し、CNN モデルに入力して処理するために正規化およびスケーリングすることが含まれます。

3. CNN モデルの設計: 次に、画像分類用に CNN モデルを設計する必要があります。CNN は、複数の畳み込み層、プーリング層、および全結合層で構成されます。畳み込み層は画像の特徴を抽出するために使用され、プーリング層は特徴マップの次元を削減するために使用され、全結合層は抽出された特徴を特定のカテゴリにマッピングするために使用されます。

4. モデルのトレーニング: 前処理されたデータ セットを使用し、それをトレーニング セットと検証セットに分割し、トレーニング セットを使用して CNN モデルをトレーニングします。トレーニング プロセス中、モデル パラメーターはバックプロパゲーション アルゴリズムを通じて継続的に調整されるため、数学の問題のグラフィックをより正確に分類できます。

5. モデルの評価: トレーニングが完了したら、検証セットを使用してモデルを評価します。評価指標には、精度、適合率、再現率などが含まれます。評価結果に基づいて、モデルの構造とパラメータをさらに最適化できます。

6. モデルの適用: トレーニングおよび評価された CNN モデルは、実際の数学問題におけるグラフィックスのインテリジェントな分類に使用できます。生徒が数学の質問を提出すると、システムは自動的にグラフィックを抽出し、トレーニングされたモデルを使用してグラフィックを分類できるため、生徒が問題をより深く理解し、正しい答えを与えることができます。

1. 事前作業

1.ライブラリをインポートする

import torch
from torchvision import datasets, transforms, models
from torch.utils.data import DataLoader
import random

2. データセットの読み込み

次の操作では、関数を使用してデータセットを分割し、トレーニングセットと検証セットに分割し、データを Tensor 形式に変換し、DataLoader を使用してデータをロードします。

データセットのダウンロード アドレス: リンク: https://pan.baidu.com/s/1hI891lQ6gbiCdq5iVZkelw?pwd=uabv
抽出コード: uabv

# 设置随机数种子
random.seed(42)

# 定义验证集的比例(可以根据需求自行设置)
val_ratio = 0.2

data_dir = "data"

# 定义图像转换
train_transforms = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

# 使用ImageFolder加载数据集
train_dataset = datasets.ImageFolder(data_dir, transform=train_transforms)

# 计算划分后的大小
dataset_size = len(train_dataset)
val_size = int(dataset_size * val_ratio)
train_size = dataset_size - val_size

# 使用random_split函数进行划分
train_dataset, val_dataset = torch.utils.data.random_split(train_dataset, [train_size, val_size])

# 使用图像数据集和转换定义dataloaders
train_loader = DataLoader(train_dataset, batch_size=10, shuffle=True)
val_loader = DataLoader(val_dataset, batch_size=10)

2. DenseNet モデルを構築する

# 加载预训练的densenet121模型
model = models.densenet121(pretrained=True)

criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

3. 学習モデル機能

num_epochs = 10
for epoch in range(num_epochs):
    running_loss = 0.0
    correct = 0
    total = 0

    for i, (images, labels) in enumerate(train_loader):
        images = images.to(device)
        labels = labels.to(device)

        optimizer.zero_grad()

        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        running_loss += loss.item()
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

        if (i+1) % 10 == 0:  # 每10个批次打印一次训练信息
            print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}, Accuracy: {:.2f}%'
                  .format(epoch+1, num_epochs, i+1, len(train_loader),
                          running_loss/10, (correct/total)*100))
            running_loss = 0.0

    # 在每个训练周期结束后计算验证集上的准确率
    model.eval()
    val_correct = 0
    val_total = 0

    with torch.no_grad():
        for images, labels in val_loader:
            images = images.to(device)
            labels = labels.to(device)

            outputs = model(images)
            _, val_predicted = torch.max(outputs.data, 1)

            val_total += labels.size(0)
            val_correct += (val_predicted == labels).sum().item()

    val_accuracy = (val_correct / val_total) * 100
    print('Epoch [{}/{}], Validation Accuracy: {:.2f}%'
          .format(epoch+1, num_epochs, val_accuracy))

    model.train()

パターン認識トレーニング データセットには 4 つのカテゴリがあります: 円 (circle)、放物線 (parabola)、正方形 (square)、三角形 (triangle)、三角形 (triangle)、正方形 (
ここに画像の説明を挿入square
ここに画像の説明を挿入)
ここに画像の説明を挿入

4. トレーニングモデルと結果

Epoch [1/10], Step [10/20], Loss: 7.5273, Accuracy: 5.00%
Epoch [1/10], Step [20/20], Loss: 1.6058, Accuracy: 34.69%
Epoch [1/10], Validation Accuracy: 85.71%
Epoch [2/10], Step [10/20], Loss: 0.2691, Accuracy: 88.00%
Epoch [2/10], Step [20/20], Loss: 0.2711, Accuracy: 89.29%
Epoch [2/10], Validation Accuracy: 93.88%
Epoch [3/10], Step [10/20], Loss: 0.0364, Accuracy: 98.00%
Epoch [3/10], Step [20/20], Loss: 0.1827, Accuracy: 95.92%
Epoch [3/10], Validation Accuracy: 93.88%
Epoch [4/10], Step [10/20], Loss: 0.0616, Accuracy: 98.00%
Epoch [4/10], Step [20/20], Loss: 0.1900, Accuracy: 96.43%
Epoch [4/10], Validation Accuracy: 93.88%
Epoch [5/10], Step [10/20], Loss: 0.0877, Accuracy: 99.00%
Epoch [5/10], Step [20/20], Loss: 0.0481, Accuracy: 98.98%
Epoch [5/10], Validation Accuracy: 93.88%
Epoch [6/10], Step [10/20], Loss: 0.1381, Accuracy: 98.00%
Epoch [6/10], Step [20/20], Loss: 0.0590, Accuracy: 97.45%
Epoch [6/10], Validation Accuracy: 93.88%
Epoch [7/10], Step [10/20], Loss: 0.0234, Accuracy: 99.00%
Epoch [7/10], Step [20/20], Loss: 0.0865, Accuracy: 98.47%
Epoch [7/10], Validation Accuracy: 97.96%
Epoch [8/10], Step [10/20], Loss: 0.0303, Accuracy: 99.00%
Epoch [8/10], Step [20/20], Loss: 0.0073, Accuracy: 99.49%
Epoch [8/10], Validation Accuracy: 97.96%
Epoch [9/10], Step [10/20], Loss: 0.0254, Accuracy: 100.00%
Epoch [9/10], Step [20/20], Loss: 0.0191, Accuracy: 100.00%
Epoch [9/10], Validation Accuracy: 97.96%
Epoch [10/10], Step [10/20], Loss: 0.0116, Accuracy: 100.00%
Epoch [10/10], Step [20/20], Loss: 0.0337, Accuracy: 99.49%
Epoch [10/10], Validation Accuracy: 97.96%

テストおよび検証結果の精度率グラフ:
ここに画像の説明を挿入
10 回の反復後、トレーニング セットの精度率は 99.49% と高く、検証セットの精度率は 97.96% と高くなります。

V. まとめ

この記事では、教育分野における人工知能の応用例を紹介します。つまり、PyTorch フレームワークの下で CNN アルゴリズムを使用して、数学の問題内のグラフィックスをインテリジェントに分類および認識します。このアプリケーションを通じて、学生は数学に関連する問題をより深く理解し、解決することができます。

アイデアの要約:

アプリケーションの背景: 教育分野における人工知能のアプリケーションと、インテリジェントな分類および認識グラフィックを使用して生徒の学習効果を向上させる方法を紹介します。

PyTorch フレームワークに基づくモデル トレーニング: PyTorch フレームワークを使用して CNN モデルを構築およびトレーニングし、数学問題におけるグラフィックスの自動分類と認識を実現することが記載されています。

機能の紹介: 学生が数学グラフを認識して理解する能力を向上させるのに役立つ、インテリジェントでパーソナライズされた学習支援の提供など、数学グラフの CNN ベースのインテリジェントな分類機能の利点について説明します。

改善: アプリケーションの潜在的な価値を強調することで、生徒の学習成果が向上し、数学的グラフィックスの理解が向上します。

おすすめ

転載: blog.csdn.net/weixin_42878111/article/details/131832615
おすすめ