# 1 深度学习与PyTorch简介

本章将介绍

* 这本书将会教给你什么？

* PyTorch作为构建深度学习项目库所扮演的角色

* PyTorch的长处和短处

* 实现样例所需的硬件

--------------------------------------------

我们正处在一个激动人心的时代。计算机可以做的事每周都在改变。仅仅就数年，那些被我们所认为的高层次认知的任务正在逐渐被接近超人水平的机器所解决。类似于用通俗易懂的语言来描述图像、玩复杂的策略类游戏和通过放射学检查诊断肿瘤的这一系列任务正在统统被计算机所解决。更令人印象深刻的是计算机获得了通过样本而不是人工编码规则解决问题的能力。

说机器正在学习人类意义上"思考"是不准确的。相反,一般的算法能够非常有效地逼近复杂的非线性拟合过程。从某种程度上来说，我们正在学习的人工智能，从主观上讲，是一个经常与自我意识（self-awareness）混为一谈的概念，但是解决这类问题并不需要自我意识。到头来，这种计算机智能的问题甚至没那么重要，正如计算机科学先驱Edsger W. Dijkstra在"计算机科学的威胁"所说：

Alan M. Turing认为，要问机器是否可以思考，就相当于问潜艇是否可以游泳。
> Alan M. Turing thought about . . . the question of whether Machines Can Think,  a question . . . about as relevant as the question of whether Submarines Can Swim.

我们正在讨论的算法属于深度学习的类别，它在基本的样本上对被称为深度神经网络的数学实体（mathematical entities）进行训练。深度学习利用大量数据拟合复杂的函数，这些函数的输入和输出差别很大，例如输入图像然后输出对输入图像的一行描述文本；又例如输入手写的剧本然后输出朗诵语音；或者更简单点，这些函数将金毛猎犬的图像和代表金毛猎犬存在的标志相互联系起来。这些能力使得开发人员能够创建一些程序，这些程序的功能在之前是人类所独有的。