HaaS AI之手写数字识别快速实践,在VSCode中搭建TensorFlow 2.0简单神经网络

简介: 本文将介绍如何在VSCode里面搭建TensorFlow的开发环境,并跑一个简单的神经网络来进行手写数据的识别。

1、Conda环境安装

参考HaaS AI之VSCode中搭建Python虚拟环境


2、创建TensorFlow Python虚拟环境

conda维护到TensorFlow2.0版本,基于Python3.7版本,因此线创建一个TensorFlow的Python虚拟环境,命名为tf2。

conda create --name tf2 python=3.7

2.1、激活环境

(tf2)$conda activate tf2

2.2、安装TensorFlow2.0

(tf2)$conda install tensorflow

2.3、安装Matplotlib

matplotlib,风格类似 Matlab 的基于 Python 的图表绘图系统。


matplotlib 是 Python最著名的绘图库,它提供了一整套和 matlab 相似的命 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序中,在模型训练中常常用来绘制图形。


(tf2)$conda install matplotlib

3、TensorFlow之初体验

TensorFlow是Google开源的深度学习框架,是一个端到端平台,无论您是专家还是初学者,它都可以让您轻松地构建和部署机器学习模型。

image.png

3.1、简单手写数字识别网络

在VSCode中训练一个简单的手写数字识别网络模型:


1. 加载TensorFlow

In [1]:

#Mac OS KMP设置

import os

os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

# 安装 TensorFlow

import tensorflow as tf

2. 载入并准备好 MNIST 数据集。将样本从整数转换为浮点数:

In [2]:

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0

3. 将模型的各层堆叠起来,以搭建 tf.keras.Sequential 模型。为训练选择优化器和损失函数:

In [3]:

model = tf.keras.models.Sequential([

 tf.keras.layers.Flatten(input_shape=(28, 28)),

 tf.keras.layers.Dense(128, activation='relu'),

 tf.keras.layers.Dropout(0.2),

 tf.keras.layers.Dense(10, activation='softmax')

])

model.compile(optimizer='adam',

             loss='sparse_categorical_crossentropy',

             metrics=['accuracy'])

4. 训练并验证模型:

In [4]:

model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)

# 输出结果

Out[4]:

Train on 60000 samples

Epoch 1/5

60000/60000 [==============================] - 9s 154us/sample - loss: 0.3008 - accuracy: 0.9120

Epoch 2/5

60000/60000 [==============================] - 9s 147us/sample - loss: 0.1444 - accuracy: 0.9579

Epoch 3/5

60000/60000 [==============================] - 10s 170us/sample - loss: 0.1073 - accuracy: 0.9676

Epoch 4/5

60000/60000 [==============================] - 10s 174us/sample - loss: 0.0890 - accuracy: 0.9726

Epoch 5/5

60000/60000 [==============================] - 11s 180us/sample - loss: 0.0765 - accuracy: 0.9764

10000/1 - 1s - loss: 0.0379 - accuracy: 0.9777

[0.0705649911917746, 0.9777]

3.2、模型保存

model.save('tf_mnist_simple_net.h5')

3.3、模型预测

3.3.1、显示待测图片

从测试集中选择索引号为image_index的图片进行测试。


5. 模型预测

# 定义plot_image函数,查看指定个数数据图像

import matplotlib.pyplot as plt #导入matplotlib.pyplot

def plot_image(image):                  #输入参数为image

   pic=plt.gcf()                       #获取当前图像

   pic.set_size_inches(2,2)            ##设置图片大

 

   plt.imshow(image, cmap='binary')    #使用plt.imshow显示图片

   plt.show()                          #设置图片大

 

# 测试集中图片索引 0~10000

In [1]:

image_index=23

# 显示待预测值

plot_image(x_test[image_index])

image.png

3.3.2、打印测试结果

pred = model.predict_classes(x_test)

#打印预测结果

print(pred)

print("测试数字结果:")

print(pred[image_index])

# 输出结果

Out [1]:

[7 2 1 ... 4 5 6]

测试数字结果:

5

为了节省训练时间,把eporch迭代次数改为1,创建一个Jupyter notebook执行1次迭代训练上述模型:


https://v.youku.com/v_show/id_XNTA5Mzk2NzU2NA==.html


注意:


在创建*.ipynb和*.py文件的名称不能是tensorflow.ipynb/tensorflow.py,否则会出现各种库找不到的情形。


3.3.3、测试代码

将以上代码合在同一个文件中(去掉输出结果部分)就可以进行测试了。


4、FQA

Q1: Mac OS上在执行模型训练时出现错误

OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.


OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.


Abort trap: 6


A1:

大概意思就是初始化libiomp5.dylib时发现已经初始化过了。


经过Google发现这似乎是一个Mac OS 才存在的特殊问题,在代码头部加入:


import os

os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"


目录
打赏
0
1
1
0
12428
分享
相关文章
基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践
本文探讨了在企业数字化转型中,大型概念模型(LCMs)与图神经网络结合处理非结构化文本数据的技术方案。LCMs突破传统词汇级处理局限,以概念级语义理解为核心,增强情感分析、实体识别和主题建模能力。通过构建基于LangGraph的混合符号-语义处理管道,整合符号方法的结构化优势与语义方法的理解深度,实现精准的文本分析。具体应用中,该架构通过预处理、图构建、嵌入生成及GNN推理等模块,完成客户反馈的情感分类与主题聚类。最终,LangGraph工作流编排确保各模块高效协作,为企业提供可解释性强、业务价值高的分析结果。此技术融合为挖掘非结构化数据价值、支持数据驱动决策提供了创新路径。
131 6
基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践
阿里云与华五教学协同中心、超星集团联合发布高校AI实践通识课丨云工开物
5月24日,华五教学协同中心、阿里云与超星集团联合发布《高校AI实践通识课》。该课程融合理论与实践,由复旦大学等高校名师打造理论部分,阿里云提供AI实训平台支持实践环节,助力学生提升AI应用能力。课程预计秋季学期免费开放,推动AI时代人才培养。阿里云副总裁刘湘雯表示,这是AI与教育深度融合的创新实践;超星集团总裁史超强调,合作模式助力人才适应未来社会发展。此外,阿里云“云工开物”计划持续为高校提供技术支持与免费算力,助力AI教育发展。
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
152 0
中国联通网络资源湖仓一体应用实践
从工厂车间到海上油田,在产业实践里探寻中国AI落地的锚点
在新一轮AI浪潮中,“技术为先”与“产业为先”的争论不断。前者追求通用人工智能,后者强调解决实际问题。中国拥有全工业门类、庞大金融消费人群和复杂政务体系,适合“产业为先”路线。政企单位成为AI落地的“产业链组织者”,通过数据治理、算力支持及行业实践推动转型。华为云Stack等平台助力大型政企解决安全可控、数据流通、模型优化和研发效率等问题,提供定制化解决方案。通过云计算技术锚点,构建可持续竞争壁垒,推动数智化转型,实现产业升级与创新发展。
73 22
何谓AI编程建官网实战【01】AI编程企业官网建设实践-以优雅草星云智控为例-优雅草卓伊凡
何谓AI编程建官网实战【01】AI编程企业官网建设实践-以优雅草星云智控为例-优雅草卓伊凡
51 1
何谓AI编程建官网实战【01】AI编程企业官网建设实践-以优雅草星云智控为例-优雅草卓伊凡
如何与AI结对编程:我与AI的8000行代码实践
作者分享了跟 AI 协作的一些经验,使用中如何对 AI 输入和反馈,经过磨合后,工作效率会大大提升。
如何与AI结对编程:我与AI的8000行代码实践
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
248 31
MCP编程与AI的结合:基于Cursor的智能开发实践
本文介绍了如何通过将 Apifox MCP Server 与支持 AI 编程的 IDE(如 Cursor、VSCode + Cline 等)集成,实现 AI 直接读取和利用最新的 API 文档,从而大幅提升开发效率。文章详细说明了配置过程,包括获取 Apifox Access Token 和项目 ID,以及在 Cursor 中设置 MCP 配置的方法。此外,还展示了多个实际应用场景,例如快速生成模型代码、同步更新接口文档与代码、生成完整的 CRUD 操作、搜索 API 文档以及自动生成测试用例。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等