# cnn-hello **Repository Path**: fengyefly/cnn-hello ## Basic Information - **Project Name**: cnn-hello - **Description**: cnn训练的简单示例 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-01 - **Last Updated**: 2025-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 前言 本仓库中代码提供一个从在windows11上安装tensorflow训练环境,并且进行cnn训练的简单示例,采用mnist提供的数据集。 ## 安装 ### 1. 创建新的conda环境,conda环境名称为t2,python版本为3.10 `conda create -n t2 python=3.10` ### 2. 进入刚创建conda环境:t1 `conda activate t2` ### 3. 设置conda清华源 ``` conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --show channels ``` ### 4. 安装cudatoolkit的11.2版本和cudnn的8.1版本 `conda install cudatoolkit=11.2 cudnn=8.1` 以下是tensorflow-gpu与cuda和cudnn的版本对照: ![tensorflow-gpu-version.png](imgs/tensorflow-gpu-version.png) ### 5. 安装tensorflow的2.10.0版本(因为pip源是单独控制的,所以这里临时指定) `pip install tensorflow==2.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple` ### 6. 安装tensorflow-gpu的2.10.0版本 `pip install tensorflow-gpu==2.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple` ### 7. 降低numpy的版本到1.22.4 `pip install numpy==1.22.4 -i https://pypi.tuna.tsinghua.edu.cn/simple` ## 注意事项 1. 在程序中`numpy<2`报错,就是因为numpy版本不匹配导致,降低numpy的版本到1.22.4可解决。 2. 由tensorflow官网可知,tensorflow 2.11开始windows不支持CUDA构建,要在 Windows 上使用 TensorFlow GPU,您需要在 WSL2 中构建/安装 TensorFlow 或将 tensorflow-cpu 与 TensorFlow-DirectML-Plugin 一起使用。(后续会研究“在WSL2中构建/安装TensorFlow”) ## 训练 运行代码文件`cnn-hello-train.py`。 ### 1、使用cpu训练 ``` Epoch 1/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 5s 16ms/step - accuracy: 0.5552 - loss: 6.6226 - val_accuracy: 0.9600 - val_loss: 0.1341 Epoch 2/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 15ms/step - accuracy: 0.9106 - loss: 0.3238 - val_accuracy: 0.9789 - val_loss: 0.0774 Epoch 3/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 16ms/step - accuracy: 0.9420 - loss: 0.2108 - val_accuracy: 0.9833 - val_loss: 0.0619 Epoch 4/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 15ms/step - accuracy: 0.9541 - loss: 0.1685 - val_accuracy: 0.9842 - val_loss: 0.0576 Epoch 5/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 3s 14ms/step - accuracy: 0.9613 - loss: 0.1431 - val_accuracy: 0.9845 - val_loss: 0.0543 Epoch 6/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 16ms/step - accuracy: 0.9654 - loss: 0.1260 - val_accuracy: 0.9861 - val_loss: 0.0533 Epoch 7/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 17ms/step - accuracy: 0.9689 - loss: 0.1126 - val_accuracy: 0.9865 - val_loss: 0.0481 Epoch 8/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 16ms/step - accuracy: 0.9701 - loss: 0.1101 - val_accuracy: 0.9871 - val_loss: 0.0542 Epoch 9/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 15ms/step - accuracy: 0.9716 - loss: 0.1022 - val_accuracy: 0.9873 - val_loss: 0.0526 Epoch 10/10 240/240 ━━━━━━━━━━━━━━━━━━━━ 4s 16ms/step - accuracy: 0.9739 - loss: 0.0922 - val_accuracy: 0.9871 - val_loss: 0.0459 313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - accuracy: 0.9843 - loss: 0.0517 测试集预测准确率为: [0.039050184190273285, 0.9883000254631042] ``` 共计:约40s cpu占用如图: ![cpu-train.png](imgs/cpu-train.png) ### 2、使用gpu训练 ``` Epoch 1/10 2025-04-01 00:20:35.986852: I tensorflow/stream_executor/cuda/cuda_dnn.cc:384] Loaded cuDNN version 8100 2025-04-01 00:20:37.184923: I tensorflow/stream_executor/cuda/cuda_blas.cc:1614] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once. 240/240 [==============================] - 4s 4ms/step - loss: 1.7912 - accuracy: 0.6880 - val_loss: 0.1344 - val_accuracy: 0.9595 Epoch 2/10 240/240 [==============================] - 1s 4ms/step - loss: 0.2980 - accuracy: 0.9168 - val_loss: 0.0778 - val_accuracy: 0.9776 Epoch 3/10 240/240 [==============================] - 1s 4ms/step - loss: 0.1997 - accuracy: 0.9456 - val_loss: 0.0596 - val_accuracy: 0.9820 Epoch 4/10 240/240 [==============================] - 1s 4ms/step - loss: 0.1590 - accuracy: 0.9566 - val_loss: 0.0528 - val_accuracy: 0.9849 Epoch 5/10 240/240 [==============================] - 1s 4ms/step - loss: 0.1371 - accuracy: 0.9627 - val_loss: 0.0549 - val_accuracy: 0.9849 Epoch 6/10 240/240 [==============================] - 1s 4ms/step - loss: 0.1270 - accuracy: 0.9656 - val_loss: 0.0464 - val_accuracy: 0.9877 Epoch 7/10 240/240 [==============================] - 1s 4ms/step - loss: 0.1143 - accuracy: 0.9684 - val_loss: 0.0494 - val_accuracy: 0.9883 Epoch 8/10 240/240 [==============================] - 1s 4ms/step - loss: 0.1063 - accuracy: 0.9710 - val_loss: 0.0508 - val_accuracy: 0.9887 Epoch 9/10 240/240 [==============================] - 1s 4ms/step - loss: 0.1025 - accuracy: 0.9720 - val_loss: 0.0463 - val_accuracy: 0.9883 Epoch 10/10 240/240 [==============================] - 1s 4ms/step - loss: 0.0984 - accuracy: 0.9730 - val_loss: 0.0452 - val_accuracy: 0.9887 训练耗时:12.295096635818481s 313/313 [==============================] - 1s 1ms/step - loss: 0.0437 - accuracy: 0.9875 测试集预测准确率为: [0.04365367442369461, 0.987500011920929] ``` 共计:约12.3s gpu占用如图: ![gpu-train1.png](imgs/gpu-train1.png) ![gpu-train.png](imgs/gpu-train.png)