线性回归的从零开始实现 讨论区

请问老师,我这个d2lzh不见在前面章节有保存啊

不知怎么操作

后面那个 In:是怎么回事啊?

原地修改:直接修改param的内容,param指向原对象
而一般的操作是生成新内容,再用param引用,param指向新对象

你好我也遇到这个错误,请问你的问题解决了吗?

解决了,我系统中安装了python2和python3,安装库的时候,环境没切换,所以他找不到库,你把这个库,安装在对应的环境下就好了

是进入gluon环境之后在进行安装是吧,谢谢了我也解决了

labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b
请问这里为什么要这样写, 这个结果就是矩阵相乘的结果吧?

def squared_loss(y_hat, y): # 本函数已保存在d2lzh包中方便以后使用
return (y_hat - y.reshape(y_hat.shape)) ** 2 / 2
这里是一次小批量的总误差吗?一次挑了10个数据

param[:] = param - lr * param.grad / batch_size
梯度是不是可以理解为 一个函数的导函数?
如果一个函数固定,那么他的导函数就是固定的.
那么在X轴上的导数值也是固定的
这个平均的含义是什么?

我肯定哪里理解错误,请大神救赎

第四步的散点图有时候能显示,有时候报错

AttributeError Traceback (most recent call last)
in
8 plt.rcParams[‘figure.figsize’] = figsize
9
—> 10 set_figsize()
11 plt.scatter(features[:, 1].asnumpy(), labels.asnumpy(), 1); # 加分号只显示图

in set_figsize(figsize)
4
5 def set_figsize(figsize=(3.5, 2.5)):
----> 6 use_svg_display()
7 # 设置图的尺寸
8 plt.rcParams[‘figure.figsize’] = figsize

in use_svg_display()
1 def use_svg_display():
2 # 用矢量图显示
----> 3 display.set_matplotlib_formats(‘svg’)
4
5 def set_figsize(figsize=(3.5, 2.5)):

AttributeError: ‘function’ object has no attribute ‘set_matplotlib_formats’

应该怎么解决?

想问下这里 l.backward() 就是对 image 这个函数求偏导,也就是梯度。那下面的param.grad 是对这个求出来的每个偏导进行引用?

你这个不是沿着梯度方向减少loss了,w1,w2,b构成的loss函数,他们的lr要一样,才是梯度,如果不一样,就相当于沿着别的方向下降,当然不收敛了,取不到局部最小值。

有大神能帮忙解惑么?
features = nd.random.normal(scale=1, shape=(num_examples, num_inputs))
labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b
labels += nd.random.normal(scale=0.01, shape=labels.shape)
这个代码应该是生成随机的features和labels,但是为什么features[0]和labels[0]每次运行打印的结果都一样涅?而且和教程的值是一样的,难道不是随机的么?

请问这个错误怎么解决
MXNetError: [17:14:01] C:\Jenkins\workspace\mxnet-tag\mxnet\src\imperative\imperative.cc:203: Check failed: AGInfo::IsNone(*output): Assigning to NDArrays that are already in a computational graph will cause undefined behavior when evaluating gradients. Please call backward first to clear the graph or do this out side of a record section. Also note that you cannot use inplace operations like +=, *=, relu(x, out=x), y[idx]=x, etc inside a record section.