TensorFlow 与深度学习 (4) 单层神经网络

MNIST 数据集中,手写数字是 28x28 像素的灰度图像。将它们进行分类的最简单的方法就是使用 28x28=784 个像素作为单层神经网络的输入。
我们首先来观察一个正在训练的神经网络。代码会在下一节解释,所以现在不必查看。
我们的神经网络可以输入手写数字并对它们进行分类,即,将它们识别为 0、1、2……9。它基于内部变量(“权重(weights)”和“偏差(bias)”,会在后面进行解释),需要得到正确的值,分类才能正常工作。这个“正确的值”通过训练过程进行学习,这也将在后面详细解释。你现在需要知道的是,训练回路看起来像这样:
1 | Training digits => updates to weights and biases => better recognition (loop) |
在你的电脑上安装必要软件:Python、TensorFlow 和 Matplotlib。完整的安装说明在这里:INSTALL.txt
克隆 GitHub 仓库:
1 | $ git clone https://github.com/martin-gorner/tensorflow-mnist-tutorial |

在这个项目中,你将学习如何构建并训练出能够识别手写数字的神经网络。在这过程中,你会慢慢地把这个神经网络强化到提升至 99%的准确度,你还会熟悉一些深度学习的专业人士使用的工具,用于有效地训练模型。
这个项目使用的是 MNIST 数据集,这个包含 60,000 个有标记数字的集合是几届博士努力近二十年的成果。你还将用不到 100 行的 Python / TensorFlow 代码来解决上述问题。
一切从获取一个 soup 对象开始
1 | try: |
用户在登录之后可以上传文件,也可以看到所有上传的文件(自己或其他用户上传的文件),并可以下载这些文件。
该系统由服务器集群(多节点)实现,每个节点能够为多个客户连接请求提供响应,当应用请求较多、节点平均负载较大时,系统会启用新的节点;当集群的总体请求量较少时,应当逐步关闭节点。
每个服务器节点都有自己的存储空间,可以保存客户上传的文件。
所有在线客户应当实时获得系统中文件信息的更新。
每个服务器节点都可能是不可靠的,k个节点故障(网络中断、节点关闭、节点崩溃……)不会对系统产生影响并介绍了如何设计、实现以及可靠性的分析等内容。
0. 将任务按不同的类型分开,例如 DiskIO,NetworkIO,CPU,能够有效地提升性能。
假设一个循环的任务由 1)下载文件、2)解压缩、3)保存到硬盘三个部分组成,总计运行 N 次。
如果one by one地做完三件事,总时间是 N * (t1 + t2 + t3)
如果组成流水线,总时间缩短到 N * min(t1, t2, t3)
在本地的Docker上Pull AWS EC2 Container Services的镜像时,遇到如下错误:
Failed to pull image "url": image pull failed for url, this may be because there are no credentials on this request. details: (unauthorized: authentication required)
解决方案是用AWS CLI工具登录Docker
1 | eval `aws ecr get-login` |
以下是引用自某开源项目的做法:
1 | FROM golang:alpine |
这样产生的包大约是 100MB,已经很不错了,但是还是浪费了大量空间。
比如 Golang SDK
在程序运行中根本用不到,Go Get带来的源文件同样用不到。Golang是可以编译到真二进制的的语言,只要保留程序本身和必要的动态链接库(.so)即可。进一步,如果使用静态链接,那库也可以不要。
获取当前Instance的IAM Role名:
1 | instance_profile=`curl http://169.254.169.254/latest/meta-data/iam/security-credentials/` |