Coder Social home page Coder Social logo

trickygo / dive-into-dl-tensorflow2.0 Goto Github PK

View Code? Open in Web Editor NEW
3.8K 3.8K 818.0 59.81 MB

本项目将《动手学深度学习》(Dive into Deep Learning)原书中的MXNet实现改为TensorFlow 2.0实现,项目已得到李沐老师的认可

Home Page: https://trickygo.github.io/Dive-into-DL-TensorFlow2.0/#/

License: Apache License 2.0

Jupyter Notebook 99.59% Python 0.41%
book chinese-simplified cv deep-learning dive-into-deep-learning jupyter-notebook nlp python3 tensorflow2 tutorials

dive-into-dl-tensorflow2.0's Introduction

Anurag's GitHub stats

dive-into-dl-tensorflow2.0's People

Contributors

archersama avatar connorsixiong avatar jacky-ch93 avatar kpol-lgx avatar liangqingyuan avatar naah69 avatar shusentang avatar skyexu avatar swordfaith avatar trickygo avatar xiaoye-hua avatar yasoz avatar youngxhui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dive-into-dl-tensorflow2.0's Issues

5.12 稠密连接网络 DenseNet 模型

在一开始5.12.1中代码所定义的稠密块有两层卷积,而在5.12.3的代码中

def densenet():
    return DenseNet(num_init_features=64, growth_rate=32, block_layers=[4,4,4,4], compression_rate=0.5, drop_rate=0.5)
mynet=densenet()

定义了block_layers[4,4,4,4], 所以实际上代码最后定义的模型是不是4x4x2个卷积层,而不是像上文所提到的

同ResNet一样,我们可以设置每个稠密块使用多少个卷积层。这里我们设成4,从而与上一节的ResNet-18保持一致

或者还是我理解错了啊

是否更新

请问后面的内容是否会更新了呢?或者大概什么时间会更新?感谢

2.3.2 训练模式和预测模式 有 关键性错误

with tf.GradientTape(persistent=True) as g:
    g.watch(x)
    y = x * x
    z = y * y
    dz_dx = g.gradient(z, x)  # 108.0 (4*x^3 at x = 3)
    dy_dx = g.gradient(y, x)  # 6.0
dz_dx,dy_dx

需要改为:

with tf.GradientTape(persistent=True) as g:
    g.watch(x)
    y = x * x
    z = y * y
dz_dx = g.gradient(z, x)  # 108.0 (4*x^3 at x = 3)
dy_dx = g.gradient(y, x)  # 6.0
dz_dx,dy_dx

编写规范建议

  1. 需要将一些专有名词规范话,例如:
  • tensorflow or Tensorflow
  • tensor or Tensor
  1. 单词与汉字之间,数字与汉字之间是否要保留空格,例如:
  • Tensorflow是一个 or Tensorflow 是一个
  1. 行内代码是否要专门括起来,原书是括起来的,例如:
  • tensor or tensor

3.15.2有误

3.15.2还是针对PyTorch的,未针对tf作修改,可以去了解一下tf2.0的初始化策略然后更新一下

3.13节,train_ch3,params更新

        if trainer is None:

            sample_grads = grads
            params[0].assign_sub(grads[0] * lr)
            params[1].assign_sub(grads[1] * lr)

为什么params只更新0,1,不应该是
for (i,param) in enumerate(params):
params[i].assign_sub(grads[i]*lr)

动手学深度学习 tensorflow版

Hi 各位,

感谢将D2L翻译到TensorFlow。目前我们在着手在d2l.ai的英文版里面加入tensorflow和pytorch的实现。现在的pytorch版的一个demo在http://pytorch.d2l.ai.s3-website-us-west-2.amazonaws.com/chapter_preface/index.htmlhttp://pytorch.d2l.ai.s3-website-us-west-2.amazonaws.com/chapter_linear-networks/linear-regression-scratch.html,代码在 https://github.com/d2l-ai/d2l-en/tree/pytorch 不知道你有没有兴趣来贡献tensorflow的实现。

(我之前发过信到各位的pku邮箱,各位可能没注意)

module 'tensorflow' has no attribute 'gradient'

线性回归的从零开始实现一节

param.assign_sub(lr * tf.gradient(l, param) / batch_size)

代码报module 'tensorflow' has no attribute 'gradient'错误,改tf.gradient为t.gradient正常

6.4 和 6.5 小结中,损失函数缺少一个参数,导致训练结果不正确

l = tf.reduce_mean(tf.losses.sparse_categorical_crossentropy(y,outputs))
该损失函数缺少参数 from_logits = True。在计算输出是没有使用激活函数softmax,因此需要在损失函数上指定,即令from_logits = True。故损失函数应该为:
l = tf.reduce_mean(tf.losses.sparse_categorical_crossentropy(y,outputs,from_logits=True))

错误结果:

epoch 50, perplexity 100.705286, time 1.76 sec
分开

  • 分开
    不分开
  • 不分开
    epoch 100, perplexity 27.005527, time 1.85 sec
    分开
  • 分开
    不分开
  • 不分开 我
    epoch 150, perplexity 1019.865201, time 1.80 sec
    分开
  • 分开象元元乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘
    不分开
  • 不分开元元乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘
    epoch 200, perplexity 1020.654544, time 1.73 sec
    分开
  • 分开象元元乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘
    不分开
  • 不分开元元乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘
    epoch 250, perplexity 1020.654544, time 1.75 sec
    分开
  • 分开象元元乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘
    不分开
  • 不分开元元乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘乘

建议

感觉有些地方都没改正过来 新手看的一头雾水 建议再好好完善一下

3.5 读取小批量 像素标准化

3.5 读取小批量
并除以255使得所有像素的数值均在0到1之间
应该加一个 map函数作映射
def data_trans(x, y):
x = tf.cast(x, tf.float32)
x = x / 255
return x, y

train_iter = tf.data.Dataset.from_tensor_slices((x_train, y_train)).map(data_trans).batch(256)

【3.3 线性回归的简洁实现】内容排版问题

多余代码

  • 第一行代码多余,可以删去;
  • for 循环中的 x 原书为 大写 X
  • 原书代码结尾有 break,这样只会输出一个,可以减少该代码输出后所在内容篇幅。
# dataset=tf.data.Dataset.from_tensor_slices((features,labels))
train_db = tf.data.Dataset.from_tensor_slices((features, labels)).batch(10)
for(x,y) in train_db:
    print(x,y)

为划分标题

该章节目前没有划分小标题。

章节优化器和损失函数在同一章节划分

可以和原书一致,将损失函数和优化器分别定义使用。

学习率数值

下面代码原书的学习率采取为 0.03 。

model.compile(optimizer=tf.keras.optimizers.SGD(0.01),
              loss='mse')

大部分段落没有句号

最后多余一个代码块

文章结尾多余一个代码块

image

7.3.3有一处笔误

简洁实现那里,train_pytorch_ch7中的pytorch应该是tensorflow2
还有函数定义中的trainer是指的trainer_name吗?

torch库在前面没有 导入(3.11.4.1)

3.11.4.1 生成数据集
该小节,torch库在前面没有 导入,我是在本地安装了Pytorch,然后import torch,就可以成功了。

n_train, n_test, true_w, true_b = 100, 100, [1.2, -3.4, 5.6], 5
features = torch.randn((n_train + n_test, 1))
poly_features = torch.cat((features, torch.pow(features, 2), torch.pow(features, 3)), 1)
labels = (true_w[0] * poly_features[:, 0] + true_w[1] * poly_features[:, 1]
+ true_w[2] * poly_features[:, 2] + true_b)
labels += torch.tensor(np.random.normal(0, 0.01, size=labels.size()), dtype=torch.float)

3.16.3 转换为nparray的时候使用的是pytorch的api

n_train = train_data.shape[0]
train_features = torch.tensor(all_features[:n_train].values, dtype=torch.float)
test_features = torch.tensor(all_features[n_train:].values, dtype=torch.float)
train_labels = torch.tensor(train_data.SalePrice.values, dtype=torch.float).view(-1, 1)

5.4.2中最后一个例子,结果问题

最后一个例子使用了padding='same', strides=2。理论上在kernel_shape=(3,3) 的情况下same padding就是在图像外面围一圈0。
然后再做strides=2的max_pooling。这个时候结果不应该是5 7 13 15么?为什么最后的结果是10 11 14 15?

6.4网页版和github上面的结果不一致

github
网页版
6.4网页版和github上面的结果不一致,代码一致,疑惑,另外6.3vocab_size实际2582,网页版和github上面是1027,如果上述有描述错误,望指教。

10.3

10.3word2vec-tensorflow2.md里面的第三块‘读取数据’ `构造的Dataset类为什么继承的父类是torch模块里的,另外文章里也并没有引入torch模块,而且这应该是由tensorflow2实现的,不应该使用torch模块吧

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.