Softmax回归的从零实现

有没有人在pycharm里遇到过Figure未响应的情况?只在Animator里加了show() 和pause()

class Animator:  #@save
    """在动画中绘制数据"""
    def __init__(self, xlabel=None, ylabel=None, legend=None, xlim=None,
                 ylim=None, xscale='linear', yscale='linear',
                 fmts=('-', 'm--', 'g-.', 'r:'), nrows=1, ncols=1,
                 figsize=(3.5, 2.5)):
        # 增量地绘制多条线
        if legend is None:
            legend = []
        d2l.use_svg_display()
        self.fig, self.axes = d2l.plt.subplots(nrows, ncols, figsize=figsize)
        if nrows * ncols == 1:
            self.axes = [self.axes, ]
        # 使用lambda函数捕获参数
        self.config_axes = lambda: d2l.set_axes(
            self.axes[0], xlabel, ylabel, xlim, ylim, xscale, yscale, legend)
        self.X, self.Y, self.fmts = None, None, fmts

    def add(self, x, y):
        # 向图表中添加多个数据点
        # hasattr() 函数用于判断对象是否包含对应的属性。
        if not hasattr(y, "__len__"):
            y = [y]
        n = len(y)
        if not hasattr(x, "__len__"):
            x = [x] * n
        if not self.X:
            self.X = [[] for _ in range(n)]
        if not self.Y:
            self.Y = [[] for _ in range(n)]
        for i, (a, b) in enumerate(zip(x, y)):
            if a is not None and b is not None:
                self.X[i].append(a)
                self.Y[i].append(b)
        self.axes[0].cla()
        for x, y, fmt in zip(self.X, self.Y, self.fmts):
            self.axes[0].plot(x, y, fmt)
        self.config_axes()
        d2l.plt.show()
        d2l.plt.pause(0.01)
        display.display(self.fig)
        display.clear_output(wait=True)

也遇到了这个问题,应该是数据没有加载成功导致的,原来数据的存放目录没有按照示例的目录放,重新严格按照示例走了一遍,解决了这个错误。

#@save 无法保存特定函数:
如图,在Visual Studio 2022 中按照书上的代码编写了函数和类。
#@save 只在d2l包中保存了class类的内容,format函数的内容d2l包告诉我未找到。(fig 1)

(fig 1)

为什么#@save无法保存书上编写的内容了?请帮帮我,谢谢。

你好,这个问题解决了吗,我也遇到同样的问题

已解决:为什么求 cross_entropy 时,切片/索引要采用 range(len(y_hat)) 的形式?我试着换成冒号 : ,但求出的结果会有 nan,导致训练不能继续。

解决方法:找到了 NumPy 的相关文档 Indexing on ndarrays — NumPy v1.26 Manual



请问这里的train_ch3并未在d2l库中,我应该如何解决这个问题呢?