华为云耀云服务器L实例-深度学习环境配置-TensorFlow进行手写数字识别

发布时间 2023-12-29 17:48:05作者: 技术僧
 华为云耀云服务器L实例-深度学习环境配置-TensorFlow进行手写数字识别

 

 

产品官网:https://www.huaweicloud.com/product/hecs-light.html

 

 

今天我们采用可靠更安全、智能不卡顿、价优随心用、上手更简单、管理特省心华为云耀云服务器L实例为例,篇中,我们将在华为云耀云服务器L实例上配置TensorFlow进行手写数字识别,作为使用云服务器进行深度学习环境配置的入门基础

 

TensorFlow是一个开源的深度学习框架,用于构建和训练各种机器学习模型,包括神经网络。手写数字识别是一个经典的机器学习问题,TensorFlow提供了强大的工具来解决这类问题。

 

在Ubuntu服务器上配置使用TensorFlow进行手写数字识别的步骤可以分为以下几个主要步骤:

 

### 步骤 1: 安装系统依赖

 

确保系统已安装一些基本依赖,包括Python和pip。【上一篇中已完成】

 

```bash

sudo apt-get update

sudo apt-get install python3-dev python3-pip

```

 

### 步骤 2: 在虚拟环境中,安装 TensorFlow

 

使用pip安装TensorFlow。你可以根据你的需求选择安装CPU版本或GPU版本。

 

```bash

pip3 install tensorflow

```

 

### 步骤 3: 编写手写数字识别代码

 

创建一个Python脚本`digit_recognition.py`,并使用TensorFlow编写手写数字识别的代码。

首先,让我们在myenv环境下创建项目结构目录:

project_root/

├── src/

│   ├── digit_recognition/

│   │   ├── digit_recognition.py

│   │   └── 其他源代码文件(如果有)

├── 其他项目文件和目录

 

 

使用vim创建一个Python脚本`digit_recognition.py`,并使用TensorFlow编写手写数字识别的代码。

 

vim digit_recognition.py

 

```python

import tensorflow as tf

from tensorflow.keras import layers, models

from tensorflow.keras.datasets import mnist

from tensorflow.keras.utils import to_categorical

 

# 加载MNIST数据集

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

 

# 数据预处理

train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255

test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255

 

train_labels = to_categorical(train_labels)

test_labels = to_categorical(test_labels)

 

# 构建神经网络模型

model = models.Sequential()

model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))

model.add(layers.Flatten())

model.add(layers.Dense(64, activation='relu'))

model.add(layers.Dense(10, activation='softmax'))

 

# 编译模型

model.compile(optimizer='adam',

              loss='categorical_crossentropy',

              metrics=['accuracy'])

 

# 训练模型

model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_data=(test_images, test_labels))

 

# 保存模型

model.save('digit_recognition_model.h5')

```

### 步骤 4: 运行代码

 

运行你的手写数字识别代码:

 

```bash

python3 digit_recognition.py

```

 

### 步骤 5: 部署模型(可选)

 

如果你希望在生产环境中使用模型进行预测,你可以将模型部署为一个Web服务、使用TensorFlow Serving或将其集成到你的应用程序中,具体取决于你的需求。

 

部署模型通常涉及将训练好的模型应用到实际场景中,其中有多种方法可以实现。下面是一种简单的示例,演示如何使用Flask创建一个简单的Web服务,将TensorFlow模型集成到其中。

 

### 步骤 1: 安装 Flask

 

首先,确保您的虚拟环境中安装了Flask:

 

```bash

pip3 install flask

```

### 步骤 2: 创建 Flask 应用

 

在项目的`src/digit_recognition/`目录下创建一个名为`app.py`的文件,用于创建Flask应用:

 

```python

from flask import Flask, request, jsonify

import tensorflow as tf

import numpy as np

 

app = Flask(__name__)

 

# 加载预训练的手写数字识别模型

model = tf.keras.models.load_model('digit_recognition_model.h5')

 

# 设置路由,接收POST请求

@app.route('/predict', methods=['POST'])

def predict():

    try:

        # 获取POST请求中的图像数据

        data = request.get_json()

        image_data = data.get('image_data', [])

 

        # 将图像数据转换为NumPy数组,并进行预处理

        image_np = np.array(image_data).reshape(28, 28, 1).astype('float32') / 255.0

 

        # 执行模型预测

        prediction = model.predict(np.array([image_np]))

 

        # 返回预测结果

        result = {'prediction': int(np.argmax(prediction))}

        return jsonify(result)

    except Exception as e:

        return jsonify({'error': str(e)})

 

if __name__ == '__main__':

    app.run(host='0.0.0.0', port=5000)

```

 

### 步骤 3: 启动 Flask 应用

 

在`src/digit_recognition/`目录下,运行以下命令启动Flask应用:

 

```bash

python3 app.py

```

 

Flask应用将在`http://你的ip地址:5000/`上运行。

 

通过这些步骤,我们成功在 华为云耀云服务器L实例上成功配置并运行TensorFlow进行手写数字识别。