楼主: Nicolle
2647 94

动手学深度学习   [推广有奖]

版主

巨擘

0%

还不是VIP/贵宾

-

TA的文库  其他...

Python Programming

SAS Programming

Structural Equation Modeling

威望
15
论坛币
12197583 个
学术水平
2693 点
热心指数
2573 点
信用等级
2494 点
经验
411413 点
帖子
16673
精华
73
在线时间
6287 小时
注册时间
2005-4-23
最后登录
2018-2-23

楼主
Nicolle 学生认证  发表于 2018-2-12 09:44:09 |只看作者 |倒序
本帖最后由 Nicolle 于 2018-2-12 10:08 编辑

动手学深度学习


这是一个深度学习的教学项目。我们将使用 Apache MXNet (incubating) 的最新 gluon 接口来演示如何从0开始实现深度学习的各个算法。我们的将利用 Jupyter notebook 能将文档,代码,公式和图形统一在一起的优势,提供一个交互式的学习体验。这个项目可以作为一本书,上课用的材料,现场演示的案例,和一个可以尽情拷贝的代码库。据我们所知,目前并没有哪个项目能既覆盖全面深度学习,又提供交互式的可执行代码。我们将尝试弥补这个空白。



本帖隐藏的内容

使? MXNet Gluon 来动?学深度学习.pdf (28.34 MB)


支持楼主:购买VIP购买贵宾 购买后,论坛将奖励 10 元论坛资金给楼主,以表示您对TA发好贴的支持
 
载入中......
已有 6 人评分经验 威望 论坛币 热心指数 收起 理由
unparalleled + 20 精彩帖子
xujingtang + 100 精彩帖子
remlus + 100 精彩帖子
aclyang + 60 精彩帖子
wead456789 + 1 精彩帖子
admin + 1 精彩帖子

总评分: 经验 + 220  威望 + 1  论坛币 + 60  热心指数 + 1   查看全部评分

本帖被以下文库推荐

stata SPSS
沙发
Nicolle 学生认证  发表于 2018-2-12 09:47:38 |只看作者
  1. 训练
  2. 训练跟之前一样。

  3. In [6]:
  4. from mxnet import autograd as autograd

  5. learning_rate = .5

  6. for epoch in range(5):
  7.     train_loss = 0.
  8.     train_acc = 0.
  9.     for data, label in train_data:
  10.         with autograd.record():
  11.             output = net(data)
  12.             loss = softmax_cross_entropy(output, label)
  13.         loss.backward()
  14.         utils.SGD(params, learning_rate/batch_size)

  15.         train_loss += nd.mean(loss).asscalar()
  16.         train_acc += utils.accuracy(output, label)

  17.     test_acc = utils.evaluate_accuracy(test_data, net)
  18.     print("Epoch %d. Loss: %f, Train acc %f, Test acc %f" % (
  19.         epoch, train_loss/len(train_data),
  20.         train_acc/len(train_data), test_acc))
  21. Epoch 0. Loss: 0.823794, Train acc 0.692692, Test acc 0.815304
  22. Epoch 1. Loss: 0.489743, Train acc 0.817174, Test acc 0.783754
  23. Epoch 2. Loss: 0.433253, Train acc 0.839560, Test acc 0.854868
  24. Epoch 3. Loss: 0.399568, Train acc 0.851012, Test acc 0.860076
  25. Epoch 4. Loss: 0.375252, Train acc 0.861094, Test acc 0.858774
复制代码


已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

回复

使用道具 举报

藤椅
Nicolle 学生认证  发表于 2018-2-12 09:49:37 |只看作者

正则化 — 使用Gluon

  1. In [1]:
  2. from mxnet import ndarray as nd
  3. from mxnet import autograd
  4. from mxnet import gluon
  5. import mxnet as mx

  6. num_train = 20
  7. num_test = 100
  8. num_inputs = 200

  9. true_w = nd.ones((num_inputs, 1)) * 0.01
  10. true_b = 0.05

  11. X = nd.random.normal(shape=(num_train + num_test, num_inputs))
  12. y = nd.dot(X, true_w) + true_b
  13. y += .01 * nd.random.normal(shape=y.shape)

  14. X_train, X_test = X[:num_train, :], X[num_train:, :]
  15. y_train, y_test = y[:num_train], y[num_train:]
复制代码
  1. In [2]:
  2. %matplotlib inline
  3. import matplotlib as mpl
  4. mpl.rcParams['figure.dpi']= 120
  5. import matplotlib.pyplot as plt
  6. import numpy as np

  7. batch_size = 1
  8. dataset_train = gluon.data.ArrayDataset(X_train, y_train)
  9. data_iter_train = gluon.data.DataLoader(dataset_train, batch_size, shuffle=True)

  10. square_loss = gluon.loss.L2Loss()

  11. def test(net, X, y):
  12.     return square_loss(net(X), y).mean().asscalar()

  13. def train(weight_decay):
  14.     epochs = 10
  15.     learning_rate = 0.005
  16.     net = gluon.nn.Sequential()
  17.     with net.name_scope():
  18.         net.add(gluon.nn.Dense(1))
  19.     net.collect_params().initialize(mx.init.Normal(sigma=1))

  20.     # 注意到这里 'wd'
  21.     trainer = gluon.Trainer(net.collect_params(), 'sgd', {
  22.         'learning_rate': learning_rate, 'wd': weight_decay})

  23.     train_loss = []
  24.     test_loss = []
  25.     for e in range(epochs):
  26.         for data, label in data_iter_train:
  27.             with autograd.record():
  28.                 output = net(data)
  29.                 loss = square_loss(output, label)
  30.             loss.backward()
  31.             trainer.step(batch_size)
  32.         train_loss.append(test(net, X_train, y_train))
  33.         test_loss.append(test(net, X_test, y_test))
  34.     plt.plot(train_loss)
  35.     plt.plot(test_loss)
  36.     plt.legend(['train','test'])
  37.     plt.show()

  38.     return ('learned w[:10]:', net[0].weight.data()[:,:10],
  39.             'learned b:', net[0].bias.data())
复制代码


已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

回复

使用道具 举报

板凳
Nicolle 学生认证  发表于 2018-2-12 09:55:13 |只看作者

The Perceptron

  1. In [1]:
  2. import mxnet as mx
  3. from mxnet import nd, autograd
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. mx.random.seed(1)
复制代码
  1. In [2]:
  2. # generate fake data that is linearly separable with a margin epsilon given the data
  3. def getfake(samples, dimensions, epsilon):
  4.     wfake = nd.random_normal(shape=(dimensions))   # fake weight vector for separation
  5.     bfake = nd.random_normal(shape=(1))            # fake bias
  6.     wfake = wfake / nd.norm(wfake)                 # rescale to unit length

  7.     # making some linearly separable data, simply by chosing the labels accordingly
  8.     X = nd.zeros(shape=(samples, dimensions))
  9.     Y = nd.zeros(shape=(samples))

  10.     i = 0
  11.     while (i < samples):
  12.         tmp = nd.random_normal(shape=(1,dimensions))
  13.         margin = nd.dot(tmp, wfake) + bfake
  14.         if (nd.norm(tmp).asscalar() < 3) & (abs(margin.asscalar()) > epsilon):
  15.             X[i,:] = tmp
  16.             Y[i] = 1 if margin.asscalar() > 0 else -1
  17.             i += 1
  18.     return X, Y

  19. # plot the data with colors chosen according to the labels
  20. def plotdata(X,Y):
  21.     for (x,y) in zip(X,Y):
  22.         if (y.asscalar() == 1):
  23.             plt.scatter(x[0].asscalar(), x[1].asscalar(), color='r')
  24.         else:
  25.             plt.scatter(x[0].asscalar(), x[1].asscalar(), color='b')

  26. # plot contour plots on a [-3,3] x [-3,3] grid
  27. def plotscore(w,d):
  28.     xgrid = np.arange(-3, 3, 0.02)
  29.     ygrid = np.arange(-3, 3, 0.02)
  30.     xx, yy = np.meshgrid(xgrid, ygrid)
  31.     zz = nd.zeros(shape=(xgrid.size, ygrid.size, 2))
  32.     zz[:,:,0] = nd.array(xx)
  33.     zz[:,:,1] = nd.array(yy)
  34.     vv = nd.dot(zz,w) + d
  35.     CS = plt.contour(xgrid,ygrid,vv.asnumpy())
  36.     plt.clabel(CS, inline=1, fontsize=10)

  37. X, Y = getfake(50, 2, 0.3)
  38. plotdata(X,Y)
  39. plt.show()
复制代码
  1. In [3]:
  2. def perceptron(w,b,x,y):
  3.     if (y * (nd.dot(w,x) + b)).asscalar() <= 0:
  4.         w += y * x
  5.         b += y
  6.         return 1
  7.     else:
  8.         return 0

  9. w = nd.zeros(shape=(2))
  10. b = nd.zeros(shape=(1))
  11. for (x,y) in zip(X,Y):
  12.     res = perceptron(w,b,x,y)
  13.     if (res == 1):
  14.         print('Encountered an error and updated parameters')
  15.         print('data   {}, label {}'.format(x.asnumpy(),y.asscalar()))
  16.         print('weight {}, bias  {}'.format(w.asnumpy(),b.asscalar()))
  17.         plotscore(w,b)
  18.         plotdata(X,Y)
  19.         plt.scatter(x[0].asscalar(), x[1].asscalar(), color='g')
  20.         plt.show()
复制代码


已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

回复

使用道具 举报

报纸
啸傲江弧 发表于 2018-2-12 10:25:18 |只看作者
谢谢楼主分享
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

回复

使用道具 举报

地板
h120733880 发表于 2018-2-12 10:50:58 来自手机 |只看作者
Nicolle 发表于 2018-2-12 09:44
动手学深度学习
这是一个深度学习的教学项目。我们将使用 Apache MXNet (incubating) 的最新 gluon 接口来 ...
感谢分享
已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

回复

使用道具 举报

7
Crsky7 发表于 2018-2-12 10:55:16 |只看作者
要是有MATLAB深度学习包就好了
已有 2 人评分经验 论坛币 收起 理由
unparalleled + 20 精彩帖子
Nicolle + 20 鼓励积极发帖讨论

总评分: 经验 + 20  论坛币 + 20   查看全部评分

回复

使用道具 举报

8
军旗飞扬 发表于 2018-2-12 11:12:56 |只看作者
谢谢分享
已有 2 人评分经验 论坛币 收起 理由
unparalleled + 20 精彩帖子
Nicolle + 20 鼓励积极发帖讨论

总评分: 经验 + 20  论坛币 + 20   查看全部评分

回复

使用道具 举报

9
minixi 发表于 2018-2-12 11:35:48 |只看作者
谢谢分享
已有 2 人评分经验 论坛币 收起 理由
unparalleled + 20 精彩帖子
Nicolle + 20 鼓励积极发帖讨论

总评分: 经验 + 20  论坛币 + 20   查看全部评分

回复

使用道具 举报

10
fengyg 企业认证  发表于 2018-2-12 12:11:07 |只看作者
kankan
已有 2 人评分经验 论坛币 收起 理由
unparalleled + 20 精彩帖子
Nicolle + 20 鼓励积极发帖讨论

总评分: 经验 + 20  论坛币 + 20   查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2018-2-23 20:21