线性回归 讨论区

http://zh.diveintodeeplearning.org/chapter_deep-learning-basics/linear-regression.html

在jupyter上一直可以运行,也可以导入mxnet包,突然今天就倒不进去了?这是怎么回事

是不是没有激活安装环境gluon

确实是,激活就好用了

您好,请问这里 按照示例代码运行的图片是这个样子,我自己按照这个新建一个写的,图片是这个样子,出现了不同的颜色?请问这是什么意思? 还有: 通过生成第二个特征 features[:, 1] 和标签 labels 的散点图,我们可以更直观地观察两者间的线性关系。这句话不太明白?

感觉点的数量好像多了好几倍,是不是生成点的时候用到了循环啊?

引用

因为教材里给的是一个二元线性模型,放到啊3维里不好看出线性关系,所以这个是把第二个维度(x_2 )和纵轴(标签轴)单独拿出来做了一个二维的平面图,更容易看出线性关系。不过由于把第一个维度完全压缩了,所以出现了上图中间部分的点特别密集的情况。

小白求大家指导这段代码是什么意思啊~~

for i in range(0, num_examples, batch_size):
        j = nd.array(indices[i: min(i + batch_size, num_examples)])
        yield features.take(j), labels.take(j)  # take函数根据索引返回对应元素

for 是循环,后面的range是范围,里面的0是起点,num_examples是终点+1,这里的num_examples是1000,所以循环范围是0-999,记住索引是从0开始,到999包括999为止。batch_size是间隔,即0-9个里面取得0,10-19取得10以此类推。
for里面 j是从ndarray里取得数据,indices参考numpy.indices,里面是从第i行,到min(i+batch_size, num_examples)行, yield 是return的意思,但返回的是一个generator,因为是在for里面,yield可以看作是return,因为yield是coroutine,比return开销要小,主要小在与不用频繁的重新为函数分配内存,return是函数执行到return就会停止并清除该函数的内存,但yield不会。 features.take(j)这里的features你理解为X,labels理解为y就可以了,因为X是二维的,y是1维的所以X大写y小写。features.take(j)返回第j行数据,y返回第j个数据。
我也是小白,所以欢迎大神指正。

1赞

我没有激活gluon也能用。我的是windows,用pip install mxnet,但是没有gluon,会对以后的计算有影响吗?

一般应该不会有影响,只不过虚拟环境做实验方便一点。

损失函数求b的偏导是怎么计算的,为什么我算出来会多一个1呢?

那个1来自b 的导数。

老师们好,刚刚开始学习请问:图片中标记的是怎么得出的呢?

2赞

#训练
epochs = 5 #对数据扫五遍
learning_rate = 0.001
for e in range(epochs):#对数据迭代一遍
total_loss = 0
for data, label in data_iter():
with autograd.record():
output = net(data)#预测值
loss = square_loss(output, label)
loss.backward()
SGD(params, learning_rate)

    total_loss += nd.sum(loss).asscalar()
print("Epoch %d, average loss: %f" %(e, total_loss/num_examples))

这个代码是跟着视频学习输入的,但是报错不知道该怎么改,新手,拉低平均水平了,抱歉
UnboundLocalError Traceback (most recent call last)
in
9 loss = square_loss(output, label)
10 loss.backward()
—> 11 SGD(params, learning_rate)
12
13 total_loss += nd.sum(loss).asscalar()

in SGD(params, lr)
1 #优化
2 def SGD(params, lr):
----> 3 for param in param:
4 param[:] = param - lr * param.grad

UnboundLocalError: local variable ‘param’ referenced before assignment

(y-y_hat)的平方写成矩阵形式就是这样

为什么我导入matplotlib之后报错了呀:disappointed_relieved:有没有大佬救救孩子

ImportError Traceback (most recent call last)
in
----> 1 import matplotlib

d:\minicoda\envs\gluon\lib\site-packages\matplotlib_init_.py in
129 _backports, mplDeprecation, dedent, get_label, sanitize_sequence)
130 from matplotlib.compat import subprocess
–> 131 from matplotlib.rcsetup import defaultParams, validate_backend, cycler
132
133 import numpy

d:\minicoda\envs\gluon\lib\site-packages\matplotlib\rcsetup.py in
25 import re
26
—> 27 from matplotlib import cbook, testing
28 from matplotlib.cbook import mplDeprecation, deprecated, ls_mapper
29 from matplotlib.fontconfig_pattern import parse_fontconfig_pattern

ImportError: cannot import name ‘testing’

为啥,我按教程来,他总提示我输入东西?

看报错是没有倒入这个包,import matplotlib.pyplot as plt
这个画图的库在python交互界面里应该是看不到的吧?一般都用jupyter notebook里运行

你记错了吧,常数求导怎么会是1呢,0才对;
x求导才是1

多谢,我已经知道,最好是在jupyter notebook里运行,如果在shell上执行,要先执行%matplotlib qt(或其他)