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"


相关文章
|
1天前
|
网络协议 网络架构 Python
Python 网络编程基础:套接字(Sockets)入门与实践
【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。
18 7
|
1天前
|
机器学习/深度学习 算法
揭秘深度学习中的对抗性网络:理论与实践
【5月更文挑战第18天】 在深度学习领域的众多突破中,对抗性网络(GANs)以其独特的机制和强大的生成能力受到广泛关注。不同于传统的监督学习方法,GANs通过同时训练生成器与判别器两个模型,实现了无监督学习下的高效数据生成。本文将深入探讨对抗性网络的核心原理,解析其数学模型,并通过案例分析展示GANs在图像合成、风格迁移及增强学习等领域的应用。此外,我们还将讨论当前GANs面临的挑战以及未来的发展方向,为读者提供一个全面而深入的视角以理解这一颠覆性技术。
|
2天前
|
机器学习/深度学习 人工智能 算法
【AI】从零构建深度学习框架实践
【5月更文挑战第16天】 本文介绍了从零构建一个轻量级的深度学习框架tinynn,旨在帮助读者理解深度学习的基本组件和框架设计。构建过程包括设计框架架构、实现基本功能、模型定义、反向传播算法、训练和推理过程以及性能优化。文章详细阐述了网络层、张量、损失函数、优化器等组件的抽象和实现,并给出了一个基于MNIST数据集的分类示例,与TensorFlow进行了简单对比。tinynn的源代码可在GitHub上找到,目前支持多种层、损失函数和优化器,适用于学习和实验新算法。
|
2天前
|
人工智能 安全 网络安全
构筑安全防线:云计算中的网络安全策略与实践
【5月更文挑战第17天】 随着云计算的迅猛发展,企业纷纷将数据和应用迁移至云端以提升效率和降低成本。然而,这一转变也带来了前所未有的安全挑战。本文深入探讨了在动态且复杂的云环境中,如何通过一系列创新的网络安全策略和技术手段来确保数据的保密性、完整性和可用性。我们将从云服务模型出发,分析不同服务层次的安全风险,并提出相应的防御机制。接着,文章将聚焦于网络安全的最新趋势,包括使用人工智能进行威胁检测、区块链在数据完整性保护中的应用,以及零信任网络架构的实现。最后,本文将讨论信息安全管理的最佳实践,强调安全意识培训和持续监控的重要性。
|
3天前
|
监控 安全 网络安全
云端防御:云计算环境下的网络安全策略与实践
【5月更文挑战第16天】 随着企业逐渐将数据和服务迁移至云平台,云计算环境的安全性成为了业界关注的焦点。本文深入探讨了在复杂多变的云服务模型中,如何通过创新的网络安全技术和策略来确保信息的完整性、机密性和可用性。文章分析了云计算环境中存在的安全挑战,并提出了相应的解决方案和最佳实践,以帮助组织构建一个既灵活又安全的云基础设施。
|
3天前
|
存储 安全 网络安全
云端守卫:云计算环境下的网络安全策略与实践
【5月更文挑战第16天】 随着企业和个人用户对计算资源的需求不断增长,云计算以其灵活性、可扩展性和成本效益成为了首选解决方案。然而,云服务的广泛采用也带来了新的安全挑战。本文旨在探讨在动态复杂的云计算环境中维护网络安全的策略和最佳实践。通过分析云服务模式(IaaS、PaaS、SaaS)的安全需求,结合最新的加密技术、访问控制机制以及合规性要求,本文提出了一系列创新的网络安全框架和应对措施,以保障数据的安全性和完整性,确保企业在享受云计算带来的便利同时,能够有效防御网络威胁和攻击。
|
3天前
|
监控 安全 算法
网络安全与信息安全:防范之道与实践策略
【5月更文挑战第16天】在数字化时代,网络安全和信息安全已成为个人和企业不可忽视的议题。本文将深入探讨网络安全漏洞的概念、加密技术的重要性以及提升安全意识的必要性,旨在为读者提供一套综合性的网络安全防护策略。通过对常见网络威胁的分析,我们揭示了安全漏洞的本质及其对信息系统的潜在影响。同时,文章还将详细介绍加密技术的基本原理和应用场景,以及如何通过教育和培训提高用户的安全意识,从而构建更为坚固的信息防线。
|
4天前
|
SQL 安全 网络安全
构建安全防线:云计算环境中的网络安全策略与实践
【5月更文挑战第14天】 随着企业逐渐将关键业务流程迁移到云端,云计算服务的安全性成为不容忽视的重要议题。本文深入探讨了在动态且复杂的云环境中实施有效的网络安全措施的策略和技术。通过分析当前云计算模型中的安全挑战,我们提出了一系列创新的安全框架和防御机制,旨在保护数据完整性、确保业务连续性并抵御不断演变的网络威胁。文中不仅涵盖了理论分析和案例研究,还对未来云计算安全技术的发展趋势进行了预测。
|
4天前
|
存储 安全 网络安全
构筑安全之盾:云计算环境下的网络安全策略与实践
【5月更文挑战第11天】 在数字化时代,云计算已成为企业及个人存储、处理和访问数据的重要平台。然而,随着云服务的广泛采用,网络安全威胁也随之增加,给信息保护带来了前所未有的挑战。本文深入探讨了云计算环境中的网络安全策略,包括加密技术、身份验证、访问控制及入侵检测系统等,旨在为读者提供一个关于如何在云服务中维护信息安全的全面视角。同时,文中还分析了当前云安全领域面临的主要挑战,并提出了未来可能的发展方向,以期对构建更为安全、可靠的云计算环境做出贡献。
9 0
|
4天前
|
监控 安全 网络安全
云端防御战线:云计算环境下的网络安全策略与实践
【5月更文挑战第10天】 在数字化转型的浪潮中,云计算作为支撑企业运营的骨干技术之一,其安全性问题备受关注。随着云服务模式的多样化和复杂化,传统的网络安全防护机制已难以完全适用于云环境。本文深入探讨了云计算环境中特有的安全威胁,分析了云计算服务模型(IaaS、PaaS、SaaS)的安全挑战,并提出了相应的安全策略与最佳实践。通过采用多层次防御架构、强化身份认证与访问控制、实施数据加密与隐私保护措施以及建立持续监控与响应机制,旨在为组织在享受云计算带来的便捷性的同时,确保其数据和服务的安全性。
http://www.vxiaotou.com