【四旋翼飞行器】76小时吃透四轴算法!史上最强软硬结合实战项目,👉戳此立抢👈

从零开始学习用Python构建神经网络

人工智能和机器人研究院 2018-05-30 08:54 次阅读

这是一份用于理解深度学习内部运作方式的初学者指南。作者根据自己从零开始学习用 Python 构建神经网络的经验,编写了一份攻略。内容涵盖神经网络定义、损失函数、前向传播、反向传播、梯度下降算法,对于想要了解深度学习运作原理的各位来说,内容精彩不可错过。

动机:为了深入了解深度学习,我决定从零开始构建神经网络,并且不使用类似 Tensorflow 的深度学习库。我相信,对于任何有理想的数据科学家而言,理解神经网络内部的运作方式都非常重要。

本文涵盖了我学到的所有东西,希望你也能从中获益!

什么是神经网络?

许多有关神经网络的介绍资料会将神经网络与大脑进行类比。但我发现,将神经网络简单地描述为一个从输入映射到输出的数学函数理解起来更容易。

神经网络由以下部分组成:

一个输入层,x

任意数量的隐藏层

一个输出层,ŷ

每两层之间都有一组权重和偏置,W 和 b

每个隐藏层都要选择一个激活函数 σ。在本文中,我们选用 Sigmoid 激活函数。

下图展示了 2 层神经网络的结构(请注意,在计算神经网络层数的时候,通常不计入输入层)。

二层神经网络的结构

利用 Python 建立神经网络非常容易。

class NeuralNetwork:    def __init__(self, x, y):        self.input      = x        self.weights1   = np.random.rand(self.input.shape[1],4)        self.weights2   = np.random.rand(4,1)                        self.y          = y        self.output     = np.zeros(y.shape)

训练神经网络

一个简单 2 层神经网络的输出 ŷ 可以表示为:

你可能注意到,在上面的等式当中,权重 W 和偏置 b 是影响输出 ŷ 的唯一变量。

自然,权重和偏差的正确值决定了预测的强度。根据输入数据微调权重和偏置的过程称为神经网络训练。

训练过程的每一次迭代包含以下步骤:

计算预测的输出 ŷ,称为前向传播

更新权重和偏置,称为反向传播

以下流程图说明了这个过程:

前向传播

正如我们在上图中所看到的,前向传播只是一个简单的计算。对于一个基本的 2 层神经网络,神经网络的输出计算如下:

我们可以在 Python 代码中添加一个前向传播函数来做到这一点。简单起见,我们假设偏置为 0。

class NeuralNetwork:    def __init__(self, x, y):        self.input      = x        self.weights1   = np.random.rand(self.input.shape[1],4)        self.weights2   = np.random.rand(4,1)                        self.y          = y        self.output     = np.zeros(self.y.shape)    def feedforward(self):        self.layer1 = sigmoid(np.dot(self.input, self.weights1))        self.output = sigmoid(np.dot(self.layer1, self.weights2))

然而,我们仍然需要一种方法来评估我们的预测的「优秀程度」(即,我们的预测与真实值相差多少?)这就需要用到损失函数了。

损失函数

损失函数有很多种,而我们问题的性质会决定我们使用哪种损失函数。在本文中,我们将采用简单的误差平方和。

误差平方和,即每个预测值和真实值之间差值的平均值。这个差值是取了平方项的,所以我们测量的是差值的绝对值。

在训练过程中,我们的目标是找到一组最佳的权重和偏置,使损失函数最小化。

反向传播

现在,我们已经找到了预测误差的方法(损失函数),那么我们需要一种方法将错误「传播」回去,从而更新权重和偏置。

为了确定权重和偏置调整的适当值,我们需要知道损失函数对权重和偏置的偏导数。

从微积分的角度来看,函数的偏导数也就是函数的斜率。

梯度下降算法

如果我们知道了偏导数,我们可以通过简单增加或减少偏导数(如上图所示)的方式来更新权重和偏置。这就是所谓的梯度下降。

然而,由于损失函数的方程不包含权重和偏置,所以我们不能直接计算损失函数对权重和偏置的偏导数。因此,我们需要链式法则来帮助计算。

以上是用于计算损失函数对权重偏导数的链式法则。简单起见,我们只展示了一层神经网络的偏导数。

唷!这看起来不大好看,但这能让我们获得所需——损失函数对权重的偏导数(斜率),以便相应调整权重。

既然我们已经有了链式法则公式,接下来我们把反向传播函数添加到 Python 代码中。

class NeuralNetwork:    def __init__(self, x, y):        self.input      = x        self.weights1   = np.random.rand(self.input.shape[1],4)        self.weights2   = np.random.rand(4,1)                        self.y          = y        self.output     = np.zeros(self.y.shape)    def feedforward(self):        self.layer1 = sigmoid(np.dot(self.input, self.weights1))        self.output = sigmoid(np.dot(self.layer1, self.weights2))    def backprop(self):        # application of the chain rule to find derivative of the loss function with respect to weights2 and weights1        d_weights2 = np.dot(self.layer1.T, (2*(self.y - self.output) * sigmoid_derivative(self.output)))        d_weights1 = np.dot(self.input.T,  (np.dot(2*(self.y - self.output) * sigmoid_derivative(self.output), self.weights2.T) * sigmoid_derivative(self.layer1)))        # update the weights with the derivative (slope) of the loss function        self.weights1 += d_weights1        self.weights2 += d_weights2

整合

既然我们已经有了做前向传播和反向传播的完整 Python 代码,我们可以将神经网络应用到一个示例中,看看它的效果。

我们的神经网络应该能够习得理想的权重集合以表示这个函数。请注意,对于我们来说,仅通过检查来计算权重并非一件小事。

如果我们将神经网络进行 1500 次迭代,看看会发生什么。下图展示了每次迭代的损失函数值,我们可以清晰地发现损失函数单调下降到最小值。这与我们前面讨论的梯度下降算法是一致的。

让我们看看神经网络在进行 1500 次迭代后的最终预测(输出):

进行 1500 次迭代后的预测值

我们成功了!我们的前向传播和反向传播算法成功训练了神经网络,且预测值收敛到了真实值。

请注意,预测值和真实值之间还是有一些轻微差异的。这是可取的,因为它防止了过度拟合,并且使得神经网络具有更强的泛化能力。

下一步

幸运的是,我们的探索还没有结束。关于神经网络和深度学习还有很多需要学习的地方。例如:

除了 Sigmoid 函数之外,我们还可以使用哪些激活函数?

在训练神经网络时使用学习率

使用卷积进行图像分类任务

最后一点想法

在撰写此文的过程中,我已经学到了很多,希望本文也能对你有所帮助。

在没有完全了解神经网络内部工作原理的情况下,虽然使用诸如 TensorFlow 和 Keras 之类的深度学习库可以让我们很容易地建立深度网络,但我认为对于有抱负的数据科学家而言,深入理解神经网络还是大有裨益的。

原文标题:无需深度学习框架,如何从零开始用Python构建神经网络

文章出处:【微信号:gh_ecbcc3b6eabf,微信公众号:人工智能和机器人研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

快速提升Python开发和配置效率的5个小技巧分享

在以前,作为一个刚开始使用Python的开发者,我时常为布设一个有效的开发环境感到困扰。找到一套自己....
的头像 马哥Linux运维 发表于 02-21 17:05 96次 阅读
快速提升Python开发和配置效率的5个小技巧分享

盘点资本加速洗牌对人工智能行业的影响

自2017年以来,深度学习概念被再次提起,AI成为全球最炙手可热的行业。不论是从创业项目数量、融资金....
的头像 重庆人工智能 发表于 02-21 16:04 161次 阅读
盘点资本加速洗牌对人工智能行业的影响

MIT深度学习基础知识 编码器-解码器架构分析

本文以 7 种架构范例简要介绍深度学习,每种范例均提供 TensorFlow 教程链接。
的头像 TensorFlow 发表于 02-21 15:53 97次 阅读
MIT深度学习基础知识 编码器-解码器架构分析

深度学习可能需要比Python更灵活更易于用的新编程语言

尽管工程师们普遍定位 Python 是简单、优雅的编程语言,但它并非毫无缺点,比如人们一直吐槽它的执....
的头像 电子发烧友网工程师 发表于 02-21 10:23 164次 阅读
深度学习可能需要比Python更灵活更易于用的新编程语言

盘点史上最全的Python算法集

本文是一些机器人算法(特别是自动导航算法)的Python代码合集。其主要特点有以下三点:选择了在实践....
的头像 电子发烧友网工程师 发表于 02-21 10:04 401次 阅读
盘点史上最全的Python算法集

人工智能行业即将迎来寒冬

深度学习处于所谓的AI革命的前沿至今已有好几年;许多人过去认为,深度学习是神奇的“银弹”,会把我们带....
的头像 人工智能学家 发表于 02-20 14:48 433次 阅读
人工智能行业即将迎来寒冬

一名Python开发工程师的职业规划

Python 是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强....
的头像 工程师人生 发表于 02-20 14:46 112次 阅读
一名Python开发工程师的职业规划

美国大学研发出拥有自主意识的机器人

美国哥伦比亚大学的研究团队发表了一项新成果:一个机器人(机械臂)有了“自我意识”。这项研究成果发表在....
的头像 机器人技术与应用 发表于 02-20 14:40 208次 阅读
美国大学研发出拥有自主意识的机器人

如何同时使用Nucleus与TensorFlow解决基因组学领域的机器学习问题

本文中阐述的两种方法均使用深度神经网络,学习将输入映射至输出的函数。神经网络由若干层线性与非线性运算....
的头像 TensorFlow 发表于 02-20 14:38 192次 阅读
如何同时使用Nucleus与TensorFlow解决基因组学领域的机器学习问题

从文本(数据)挖掘的角度去“探索”全唐诗

然而,对于古汉语(文言文),尤其是诗词的分词处理可没有这么简单,因为单字词占古汉语词汇统计信息的80....
的头像 悟空智能科技 发表于 02-20 14:23 115次 阅读
从文本(数据)挖掘的角度去“探索”全唐诗

通过Python将故宫的建筑物图片,转化为手绘图

把图像看成二维离散函数,灰度梯度其实就是这个二维离散函数的求导,用差分代替微分,求取图像的灰度梯度。....
的头像 电子发烧友网工程师 发表于 02-19 09:26 1224次 阅读
通过Python将故宫的建筑物图片,转化为手绘图

深度学习在计算机视觉领域的瓶颈已至

有种策略,是把标准对抗攻击 (Adversarial Attacks) 的概念扩展到包含非局部结构 ....
的头像 悟空智能科技 发表于 02-18 14:52 187次 阅读
深度学习在计算机视觉领域的瓶颈已至

雷洪钧:汽车自动驾驶技术与实例的研究(上)

光学摄像头,按安装位置不同的分类车载摄像头布置位置(见图1)主要包括内视摄像头、后视摄像头、前置摄像....
的头像 智车科技 发表于 02-18 14:28 575次 阅读
雷洪钧:汽车自动驾驶技术与实例的研究(上)

史上最强通用NLP模型诞生

OpenAI今天在官博上介绍了他们的新NLP模型,刷新了7大数据集的SOTA(当前最佳结果),并且能....
的头像 人工智能和机器人研究院 发表于 02-18 14:19 277次 阅读
史上最强通用NLP模型诞生

先天结构或是人工智能发展的下一个方向

人工智能从神经科学领域吸收了大量养分,并由此催生了深度学习和强化学习等智能处理方法。以色列魏茨曼科学....
的头像 电子发烧友网工程师 发表于 02-18 10:24 749次 阅读
先天结构或是人工智能发展的下一个方向

Python打造最强表白程序

在抓取这个网站的情话时,如果你利用普通的爬取思路,即利用 request 进行请求,你会发现网页获取....
的头像 电子发烧友网工程师 发表于 02-18 09:47 267次 阅读
Python打造最强表白程序

如何快速入门Python爬虫的?

抛开数据,可能你会觉得这张图在排版布局、色彩搭配、字体文字等方面还挺好看的。这些呢,就跟爬虫没什么关....
的头像 电子发烧友网工程师 发表于 02-18 09:38 232次 阅读
如何快速入门Python爬虫的?

TensorFlow 2.0最佳实践及主要变化

由于能够自由地穿插 Python 和 TensorFlow 代码,您能够充分利用 Python 的表....
的头像 电子发烧友网工程师 发表于 02-18 09:34 196次 阅读
TensorFlow 2.0最佳实践及主要变化

图神经网络到底有多厉害?斯坦福33页PPT带你看明白!

新智元今天为大家推荐一份PPT综述,作者是斯坦福大学的多位博士后和博士生。这篇综述由基于神经网络和图....
的头像 新智元 发表于 02-18 09:04 232次 阅读
图神经网络到底有多厉害?斯坦福33页PPT带你看明白!

【PYNQ-Z2试用体验】Jupyter Notebook体验

前言上一篇文章中,我们通过网线连接开发板,以ssh的方式成功登录了linux系统。通过资料发现系统安装了交互式的Python,接下来...
发表于 02-17 19:37 133次 阅读
【PYNQ-Z2试用体验】Jupyter Notebook体验

国内某人脸识别公司数据泄露影响超250万人

2月15日,根据微博安全应急响应中心消息,国内某人脸识别公司发生大规模数据泄露事件。
的头像 芯智讯 发表于 02-17 10:06 590次 阅读
国内某人脸识别公司数据泄露影响超250万人

探析从贝叶斯到深度学习及各自优缺点

集成方法是由多个较弱的模型集成模型组,其中的模型可以单独进行训练,并且它们的预测能以某种方式结合起来....
的头像 人工智能学家 发表于 02-17 09:56 320次 阅读
探析从贝叶斯到深度学习及各自优缺点

OpenCV的Mat数据格式及其遍历的程序资料说明

在opencv早期的版本中,图像通过一个叫做IplImage的结构(structure)存储在内存中....
的头像 C语言专家集中营 发表于 02-17 09:42 250次 阅读
OpenCV的Mat数据格式及其遍历的程序资料说明

DNN解决ImageNet时的策略似乎比我们想象的要简单得多

这就避免了对图像的显式分区,并且尽可能接近标准CNN,同时仍然实现概述的策略,我们称之为模型结构Ba....
的头像 新智元 发表于 02-16 11:12 353次 阅读
DNN解决ImageNet时的策略似乎比我们想象的要简单得多

推荐一本中文PyTorch书籍——PyTorch中文手册

12 月 8 日 PyTorch 已经发布 1.0 的稳定版。 API 的改动不是很大,本教程已经通....
的头像 新智元 发表于 02-16 10:58 502次 阅读
推荐一本中文PyTorch书籍——PyTorch中文手册

用python做一个三阶拼图

程序的功能很简单,还是之前我们用到的pygame和随机数的知识,整个流程非常的清晰,但是我们需要注意....
的头像 电子发烧友网工程师 发表于 02-16 10:37 299次 阅读
用python做一个三阶拼图

为什么选择Python?谈谈如何学习Python

每种语言都有它自己的优点和缺点,以及最适用的场景。Python 最常用的三个场景是数据处理、编写 W....
的头像 电子发烧友网工程师 发表于 02-16 10:26 346次 阅读
为什么选择Python?谈谈如何学习Python

Python登上“最强王者”中国程序猿是“全场MVP”

国内基于 Python 创业成功的案例不在少数,豆瓣,知乎,果壳,全栈都是 Python,大家对 P....
的头像 电子发烧友网工程师 发表于 02-16 10:23 273次 阅读
Python登上“最强王者”中国程序猿是“全场MVP”

TIOBE编程语言社区发布了最新的2月编程语言排行榜

除此之外,Groovy 在一次进入语言排行榜前20,它第一次进入语言排行榜前20是在2016年末,因....
的头像 电子发烧友网工程师 发表于 02-16 10:12 328次 阅读
TIOBE编程语言社区发布了最新的2月编程语言排行榜

中国6家公司上榜全球AI初创企业100强

日前,全球知名创投研究机构CB Insights公布了2019全球100强AI初创企业排行榜,这10....
的头像 机器人技术与应用 发表于 02-15 17:07 950次 阅读
中国6家公司上榜全球AI初创企业100强

深度学习的基础理论,深度学习为何work又为何不work?

深度学习的泛化能力为什么那么好?大家知道深度学习理论的第一个谜团就是一个大的网络动辄百万参数, 而能....
的头像 人工智能学家 发表于 02-15 16:47 920次 阅读
深度学习的基础理论,深度学习为何work又为何不work?

为什么现在的人工智能助理都像人工智障

大家好,我又出来怼人了。 “ 我不是针对谁,只是现在所有的深度学习都搞不定对话AI。”
的头像 算法与数据结构 发表于 02-15 16:11 716次 阅读
为什么现在的人工智能助理都像人工智障

谷歌等探索深度学习新理论蓝图

深度学习需要更多的理论!这是学术界的一个共识。神经网络十分强大,但往往不可预测。现在,谷歌大脑、FA....
的头像 机器人大讲堂 发表于 02-15 15:16 258次 阅读
谷歌等探索深度学习新理论蓝图

仔细研究用于机器学习和数据科学的十大Python工具

毫无疑问,Python是最流行的语言之一,其成功的原因之一是它为科学计算提供了广泛的报道。 在这里,....
的头像 人工智能 发表于 02-15 15:03 313次 阅读
仔细研究用于机器学习和数据科学的十大Python工具

黑客是怎么用python的?检如何判断目标环境是否部署防火墙?

在步骤1中我们定义了我们的HTML文档,其中表单名称为“waf”。因此在第三行代码中,我们需要告诉m....
的头像 马哥Linux运维 发表于 02-15 14:26 262次 阅读
黑客是怎么用python的?检如何判断目标环境是否部署防火墙?

Python爬虫库-BeautifulSoup的使用

可以看到 children 的类型为 .contents 和 .children 属性仅包含tag的....
的头像 马哥Linux运维 发表于 02-15 14:22 254次 阅读
Python爬虫库-BeautifulSoup的使用

Python的套路都在这里了!7个案例15分钟让你了解

而我要推荐的计算机语言,答案已在标题中被出卖:Python!Python是一门十分容易上手,但是又被....
的头像 马哥Linux运维 发表于 02-15 14:14 384次 阅读
Python的套路都在这里了!7个案例15分钟让你了解

如何用Python实现极大似然估计?

从上面的结论可以看出,作100次伯努利实验,出现positive、1及head的数目是53个,相应的....
的头像 马哥Linux运维 发表于 02-15 14:07 247次 阅读
如何用Python实现极大似然估计?

使用python进行语音识别的终极指南

亚马逊的 Alexa 的巨大成功已经证明:在不远的将来,实现一定程度上的语音支持将成为日常科技的基本....
的头像 马哥Linux运维 发表于 02-15 13:42 217次 阅读
使用python进行语音识别的终极指南

人工智能最新现状分析,智能化时代要来临了吗?

现在人工智能确实非常好,各种人才进入人工智能行业开始研究各种产品,火热程度超越以前。但是真正落地的应....
发表于 02-15 10:15 381次 阅读
人工智能最新现状分析,智能化时代要来临了吗?

FEM模拟中的python异常

您好,我在Linux RedHat5_10下使用EMPRo2013_07运行大型FEM模拟时收到以下Python错误消息有没有人得到类似的东西? ...
发表于 02-14 15:14 28次 阅读
FEM模拟中的python异常

AI大夫的能力又精进了,有产品有真相

该模型先通过自然语言处理技术对电子病例进行标注,再利用逻辑回归来建立层次诊断。这是一种基于器官的方法....
的头像 人工智能学家 发表于 02-14 15:13 387次 阅读
AI大夫的能力又精进了,有产品有真相

自然语言处理技术基于文本型电子病历(EMR)做临床智能诊断的研究成果!

我们通过阅读训练数据中的句子,并选择临床相关单词以用于查询-答案模型构建来生成词典。词典的关键词由我....
的头像 新智元 发表于 02-14 08:56 680次 阅读
自然语言处理技术基于文本型电子病历(EMR)做临床智能诊断的研究成果!

一份2019 AI算法岗求职攻略,快来“扫盲”吧!

目前该攻略已涵盖校招时间表、准备攻略、刷题指南、内推、AI公司清单和答疑等资料。资料已经上传到 AI....
的头像 新智元 发表于 02-14 08:54 314次 阅读
一份2019 AI算法岗求职攻略,快来“扫盲”吧!

求scons和python软件分享

那位大佬有这两款软件,求分享!邮箱:
发表于 02-14 03:07 40次 阅读
求scons和python软件分享

探索深度学习蓝图新理论 让神经网络更深更窄

深度学习需要更多的理论!这是学术界的一个共识。神经网络十分强大,但往往不可预测。
的头像 人工智能 发表于 02-13 15:30 147次 阅读
探索深度学习蓝图新理论 让神经网络更深更窄

MicroPython自动浇水实验

    实验目的:     学习在PC机系统中扩展简单I/O 接口的方法     学习TurnipBit拼插...
发表于 02-13 13:11 219次 阅读
MicroPython自动浇水实验

用Python分析过 36年春晚节目数据,发现了一些趣事

导演是春晚的总负责人,好比厨师,厨师决定了春晚大餐好不好吃。36 年间,有很多导演负责过春晚,比如近....
的头像 新智元 发表于 02-13 11:03 461次 阅读
用Python分析过 36年春晚节目数据,发现了一些趣事

7种架构范例的深度学习,每个范例都提供了TensorFlow教程

在下面的部分中,我将简要描述这 7 种架构范例,并提供每个范例的演示性TensorFlow 教程的链....
的头像 新智元 发表于 02-13 10:40 355次 阅读
7种架构范例的深度学习,每个范例都提供了TensorFlow教程

DeepMind的“星际2”智能体AlphaStar实际上是演化算法?

在AlphaStar中,用于训练智能体的基于人口的训练策略(PBT)是使用拉马克进化(LE)的模因算....
的头像 新智元 发表于 02-13 10:34 317次 阅读
DeepMind的“星际2”智能体AlphaStar实际上是演化算法?

ICLR-17最佳论文《理解深度学习需要重新思考泛化》

本文提供了进一步的经验证据,并进行了可能更细致的分析。尤其是,我们凭经验表明,深层网络中的层在表示预....
的头像 新智元 发表于 02-13 10:26 204次 阅读
ICLR-17最佳论文《理解深度学习需要重新思考泛化》

自然语言处理工具python调用hanlp中文实体识别

Hanlp作为一款重要的中文分词工具,在GitHub的用户量已经非常之高,应该可以看得出来大家对于hanlp这款分词工具还是很认可的。...
发表于 02-13 10:26 389次 阅读
自然语言处理工具python调用hanlp中文实体识别

讨论8种在Python环境下进行简单线性回归计算的算法

对于大多数数据科学家而言,线性回归方法是他们进行统计学建模和预测分析任务的起点。但我们不可夸大线性模....
的头像 马哥Linux运维 发表于 02-13 10:23 788次 阅读
讨论8种在Python环境下进行简单线性回归计算的算法

从四个经典角度看机器学习的本质

何谓“机器学习”,学界尚未有统一的定义。本文摘取Tom Mitchell、Christopher M....
的头像 新智元 发表于 02-13 09:44 403次 阅读
从四个经典角度看机器学习的本质

怎么从MXG Signal Generator N5182A加载和传输IQ数据文件

嗨,我尝试控制Agilent MXG N5182A并需要帮助。 我有一个创建的数据包库,其中包含各种通道衰落配置文件,用于自动,可重...
发表于 01-29 08:54 31次 阅读
怎么从MXG Signal Generator N5182A加载和传输IQ数据文件

RT-Thread MicroPython的特性和优势

RT-Thread 推出了 MicroPython 软件包,可以运行在 RT-Thread 操作系统上,支持众多开发板,可以快速完成各种 IOT 功...
发表于 01-29 06:35 63次 阅读
RT-Thread MicroPython的特性和优势

【PYNQ-Z2试用体验】玩转PYNQ系列:三、PYNQ数字图像处理之图像采集

在硬件上,PYNQ-Z2为更好地扩展图像应用,同时配备了HDMI输入和HDMI输出端口。但硬件上并没有使用HDMI芯片进行...
发表于 01-28 22:50 357次 阅读
【PYNQ-Z2试用体验】玩转PYNQ系列:三、PYNQ数字图像处理之图像采集

MicroPython最全资料免费获取

    MicroPython成功将Python引入到嵌入式领域,近几年MicroPython的发展和普及也证明,Python无疑将在未来几年...
发表于 01-28 11:44 171次 阅读
MicroPython最全资料免费获取

串行字符串以随机字符结尾

嗨,GuySi正在尝试把一系列字符串传送到Python,所有的值都显示得很完美,但是它们都以结尾的随机字符结尾,每当我重新启动M...
发表于 01-25 14:09 58次 阅读
串行字符串以随机字符结尾