点击上方“AI有道”,选择“置顶”公众号

重磅干货,第一时间送达

红色石头之前在某乎上回答“机器学习该怎么入门”这个问题的时候,曾经给入门学者提过一个建议,就是放弃海量资料。确实,资料不在多而在精!一份优秀的资料完全可以帮助我们快速地入门和进阶。

今天给大家推荐一份最近新出的非常火热的深度学习入门教程:《神经网络与深度学习》,这本书由复旦大学的邱锡鹏老师所著。

《神经网络与深度学习》排在首位的特点就是它是完全的中文教程。我相信大部分深度学习入门学者面对英文教程的时候,战斗力多半会削减大半。而邱锡鹏老师的这本书恰恰为中国学生而著,大大降低了深度学习的语言门槛,让大家有更多的精力放在核心知识内容的学习上。

关于本书

关于本书,邱锡鹏是这样评价的:

近年来,以机器学习、知识图谱为代表的人工智能技术逐渐变得普及。从车牌识别、人脸识别、语音识别、智能问答、推荐系统到自动驾驶,人们在日常生活中都可能有意无意地使用到了人工智能技术。这些技术的背后都离不开人工智能领域研究者们的长期努力。特别是最近这几年,得益于数据的增多、计算能力的增强、学习算法的成熟以及应用场景的丰富,越来越多的人开始关注这一个“崭新”的研究领域:深度学习。深度学习以神经网络为主要模型,一开始用来解决机器学习中的表示学习问题。但是由于其强大的能力,深度学习越来越多地用来解决一些通用人工智能问题,比如推理、决策等。目前,深度学习技术在学术界和工业界取得了广泛的成功,受到高度重视,并掀起新一轮的人工智能热潮。

这本书的作者邱锡鹏老师,目前是复旦大学计算机科学技术学院的博士生导师、自然语言处理与深度学习组的副教授。

《神经网络与深度学习》主要介绍神经网络与深度学习中的基础知识、主要模型(卷积神经网络、递归神经网络等)以及在计算机视觉、自然语言处理等领域的实际应用。

主要内容

这本书目前已经更新完毕,总共包含了 15 章。内容涉及神经网络集基础知识以及经典的 CNN、RNN 模型,还有其在 CV 和 NLP 方面的应用。15 章内容分为三大部分:第一部分为入门篇,包括 1~3 章;第二部分为基础模型,包括 4~10 章;第三部分为进阶模型,包括 11~15 章。

完整书籍目录如下:

  • 第 1 章:绪论

  • 第 2 章:机器学习概述

  • 第 3 章:线性模型

  • 第 4 章:前馈神经网络

  • 第 5 章:卷积神经网络

  • 第 6 章:循环神经网络

  • 第 7 章:网络优化与正则化

  • 第 8 章:注意力机制与外部记忆

  • 第 8 章:无监督学习

  • 第 10 章:模型独立的学习方式

  • 第 11 章:概率图模型

  • 第 12 章:深度信念网络

  • 第 13 章:深度生成模型

  • 第 14 章:深度强化学习

  • 第 15 章:序列生成模型

除了 15 章正文内容外,作者还为我们提供了详细的数学基础知识,放在了附录部分。数学基础总共包含 4 方面内容:

  • 附录 A:线性代数

  • 附录 B:微积分

  • 附录 C:数学优化

  • 附录 D:概率论

这些数学基础知识,可谓是神经网络与深度学习的内功心法!也是本书的最大亮点之一,能够极大提升我们在阅读本书的效率。

课程资源

目前,邱锡鹏老师已经开源了该课程所有的资源,包括书籍 pdf,课程 ppt,书籍相关习题参考代码等。

课程主页:

https://nndl.github.io/

全书 pdf:

https://nndl.github.io/nndl-book.pdf

3 小时课程概要:

https://nndl.github.io/ppt/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E4%B8%8E%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0-3%E5%B0%8F%E6%97%B6.pdf

示例代码:

https://github.com/nndl/nndl-codes

课程练习:

https://github.com/nndl/exercise

关于课程练习,作者大都提供了最热门的 PyTorch 和 TensorFlow 两种框架的实现方式。以第 5 章 CNN 为例,我们来看一下相关代码。

PyTorch 实现:

import os
import torch
import torch.nn as nn
from torch.autograd import Variable
import torch.utils.data as Data
import torchvision
import torch.nn.functional as F
import numpy as np
learning_rate = 1e-4
keep_prob_rate = 0.7 #
max_epoch = 3
BATCH_SIZE = 50DOWNLOAD_MNIST = False
if not(os.path.exists('./mnist/')) or not os.listdir('./mnist/'):# not mnist dir or mnist is empyt dirDOWNLOAD_MNIST = Truetrain_data = torchvision.datasets.MNIST(root='./mnist/',train=True, transform=torchvision.transforms.ToTensor(), download=DOWNLOAD_MNIST,)
train_loader = Data.DataLoader(dataset = train_data ,batch_size= BATCH_SIZE ,shuffle= True)test_data = torchvision.datasets.MNIST(root = './mnist/',train = False)
test_x = Variable(torch.unsqueeze(test_data.test_data,dim  = 1),volatile = True).type(torch.FloatTensor)[:500]/255.
test_y = test_data.test_labels[:500].numpy()class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Sequential(nn.Conv2d( # ???# patch 7 * 7 ; 1  in channels ; 32 out channels ; ; stride is 1# padding style is same(that means the convolution opration's input and output have the same size)in_channels=      ,  out_channels=     ,kernel_size=      ,stride=           ,padding=          ,),nn.ReLU(),        # activation functionnn.MaxPool2d(2),  # pooling operation)self.conv2 = nn.Sequential( # ???# line 1 : convolution function, patch 5*5 , 32 in channels ;64 out channels; padding style is same; stride is 1# line 2 : choosing your activation funciont# line 3 : pooling operation function.)self.out1 = nn.Linear( 7*7*64 , 1024 , bias= True)   # full connection layer oneself.dropout = nn.Dropout(keep_prob_rate)self.out2 = nn.Linear(1024,10,bias=True)def forward(self, x):x = self.conv1(x)x = self.conv2(x)x = x.view(      )  # flatten the output of coonv2 to (batch_size ,32 * 7 * 7)    # ???out1 = self.out1(x)out1 = F.relu(out1)out1 = self.dropout(out1)out2 = self.out2(out1)output = F.softmax(out2)return outputdef test(cnn):global predictiony_pre = cnn(test_x)_,pre_index= torch.max(y_pre,1)pre_index= pre_index.view(-1)prediction = pre_index.data.numpy()correct  = np.sum(prediction == test_y)return correct / 500.0def train(cnn):optimizer = torch.optim.Adam(cnn.parameters(), lr=learning_rate )loss_func = nn.CrossEntropyLoss()for epoch in range(max_epoch):for step, (x_, y_) in enumerate(train_loader):x ,y= Variable(x_),Variable(y_)output = cnn(x)  loss = loss_func(output,y)optimizer.zero_grad()loss.backward()optimizer.step()if step != 0 and step % 20 ==0:print("=" * 10,step,"="*5,"="*5, "test accuracy is ",test(cnn) ,"=" * 10 )if __name__ == '__main__':cnn = CNN()train(cnn)

TensorFlow 实现:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)learning_rate = 1e-4
keep_prob_rate = 0.7 #
max_epoch = 2000
def compute_accuracy(v_xs, v_ys):global predictiony_pre = sess.run(prediction, feed_dict={xs: v_xs, keep_prob: 1})correct_prediction = tf.equal(tf.argmax(y_pre,1), tf.argmax(v_ys,1))accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys, keep_prob: 1})return resultdef weight_variable(shape):initial = tf.truncated_normal(shape, stddev=0.1)return tf.Variable(initial)def bias_variable(shape):initial = tf.constant(0.1, shape=shape)return tf.Variable(initial)def conv2d(x, W):# 每一维度  滑动步长全部是 1, padding 方式 选择 same# 提示 使用函数  tf.nn.conv2dreturn def max_pool_2x2(x):# 滑动步长 是 2步; 池化窗口的尺度 高和宽度都是2; padding 方式 请选择 same# 提示 使用函数  tf.nn.max_poolreturn # define placeholder for inputs to network
xs = tf.placeholder(tf.float32, [None, 784])/255.
ys = tf.placeholder(tf.float32, [None, 10])
keep_prob = tf.placeholder(tf.float32)
x_image = tf.reshape(xs, [-1, 28, 28, 1])#  卷积层 1
## conv1 layer ##W_conv1 =                       # patch 7x7, in size 1, out size 32
b_conv1 =
h_conv1 =                       # 卷积  自己选择 选择激活函数
h_pool1 =                       # 池化               # 卷积层 2
W_conv2 =                        # patch 5x5, in size 32, out size 64
b_conv2 =
h_conv2 =                        # 卷积  自己选择 选择激活函数
h_pool2 =                        # 池化#  全连接层 1
## fc1 layer ##
W_fc1 = weight_variable([7*7*64, 1024])
b_fc1 = bias_variable([1024])h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)# 全连接层 2
## fc2 layer ##
W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])
prediction = tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)# 交叉熵函数
cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)for i in range(max_epoch):batch_xs, batch_ys = mnist.train.next_batch(100)sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys, keep_prob:keep_prob_rate})if i % 100 == 0:print(compute_accuracy(mnist.test.images[:1000], mnist.test.labels[:1000]))

开源万岁!这份优秀的深度学习资源,赶快试试吧~

【推荐阅读】

干货 | 公众号历史文章精选(附资源)

我的深度学习入门路线

我的机器学习入门路线图

?欢迎加入

撒花!《神经网络与深度学习》中文教程正式开源!全书 pdf、ppt 和代码一同放出...相关推荐

  1. Michael Nielsen的神经网络与深度学习入门教程

    Michael Nielsen的神经网络与深度学习入门教程 作者:Michael Nielsen ​ 这是我个人以为目前最好的神经网络与机器学习入门资料.作者以MNIST为例详细介绍了神经网络中的基本 ...

  2. 深度学习掩膜_交叉新趋势|采用神经网络与深度学习来预报降水、温度等案例(附代码/数据/文献)...

    欢迎订阅微信公众号:『气象学家』 阅读建议 随着人工智能的发展,拥有了越来越丰富的应用场景,气象行业也不例外,在突破传统预报方法的情况下,神经网络与深度学习来预报气象要素也取得了不错的效果,下面就给出 ...

  3. 撒花!斯坦福深度学习最新视频发布,吴恩达主讲!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 就在 3 月 21 日,由吴恩达开设的斯坦福深度学习课程 CS230 课程视频发布到了网上.视 ...

  4. 就在刚刚,百度重磅发布《深度学习中文教程实战版》,对外免费开发!

    很多小伙伴在后台给我留言,深度学习对零基础技术小白太不友好了-确实,晦涩的理论.冗长的代码.复杂的调试.鱼龙混杂的资料...搞懵了不少同学- 有办法吗?个人认为还是有的,比如大可不必一上手就选择难啃的 ...

  5. 真香!2020最新版《神经网络与深度学习》中文版更新完毕,PDF免费开放下载~...

    介绍 <神经⽹络和深度学习>是⼀本免费的在线书,对读者数学知识需求适度,兼顾理论和动手实践. ⽬前给出了在图像识别.语⾳识别和⾃然语⾔处理领域中很多问题的最好解决⽅案,教读者在神经⽹络和深 ...

  6. 学习 |《神经网络与深度学习》的讲义

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:专知 AI博士笔记系列推荐 周志华<机器学习>手推笔 ...

  7. 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第四周作业(12)

    [吴恩达课后编程作业]01 - 神经网络和深度学习 - 第四周 - PA1&2 - 一步步搭建多层神经网络以及应用 上一篇: [课程1 - 第四周测验]※※※※※ [回到目录]※※※※※下一篇 ...

  8. 复旦邱锡鹏教授公布《神经网络与深度学习》,中文免费下载 | 极客头条

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」,购票请扫码咨询 ↑↑↑ 整理 | Jane 出品 | AI科技大本营 优质的人工智能学习资源一直是大家非常关注的,以往我们也推荐过很多 ...

  9. 火爆网络的《神经网络与深度学习》,有人把它翻译成了中文版!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 今天给大家介绍一本非常好的深度学习入门书籍,就是<Neural Network and ...

最新文章

  1. 将对象序列化与反序列实例
  2. 我常用的Eclipse插件
  3. 转:pysqlite笔记
  4. hive拉链表实现方案一
  5. Intouch高级报警(报警筛选)
  6. java日期函数_java常用日期函数总结
  7. 冒险岛里不合逻辑的地方
  8. oracle lms进程 内存,lms进程耗用大量内存
  9. 【算法java版01】:键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成*
  10. 对统驭科目和特别总账标志的理解
  11. window创建l2tp
  12. 用pytorch官网命令 安装pytorch1.10.1+CUDA11.1报错
  13. (HttpClient技术)(58同城系列)58同城登录
  14. 精美底部营销通用型插件(客服+电话+微信)按钮
  15. 非盈利组织能力建设探讨
  16. 复权因子:历史数据库与回测
  17. 等效结点荷载计算机语言,基于FORTRAN的3D等效结点荷载计算
  18. python的一些语句的意思
  19. 关于微信、QQ语音消息,语音电话的时候控制应用音频播放以及暂停
  20. html中outline属性,CSS outline 属性

热门文章

  1. golang美国纽约时间
  2. ubuntu 永久打开USB串口权限、232串口权限
  3. 渗透测试面试问题合集
  4. qq截图怎样截全屏?
  5. Django对接支付宝实现支付宝充值金币功能
  6. Mathtype嵌入word和公式编号的问题
  7. spss24 中文版 1. 数据定义
  8. 暗黑三php是什么东西,暗黑3卡奈魔盒怎么得有什么用_暗黑3卡奈魔盒详细介绍
  9. Java学习之计算圆面积
  10. 小米手机续航尿崩?其实只要注意这5个功能,一天一充很轻松