【深度学习】今日bug(8月2)

简介: 【深度学习】今日bug(8月2)

一. TypeError: ‘method’ object is not iterable


1. 错误提示 && 部分代码


错误提示:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-40-9ae7d7a05a23> in <module>
      4 # 从数值标签到文本标签
      5 true_labels = d2l.get_fashion_mnist_labels(y.asnumpy())
----> 6 pred_labels = d2l.get_fashion_mnist_labels(net(X).argmax(axis=1).asnumpy)
      7 titles = [true + '\n' + pred for true, pred in zip(true_labels, pred_labels)]
      8 
D:\anaconda\lib\site-packages\d2lzh\utils.py in get_fashion_mnist_labels(labels)
    183     text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat',
    184                    'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']
--> 185     return [text_labels[int(i)] for i in labels]
    186 
    187 
TypeError: 'method' object is not iterable

通常错误提示还是非常有用的,可以有效地帮助我们地定位bug的位置。


部分代码段:


for X, y in test_iter:
    break
# 从数值标签到文本标签
true_labels = d2l.get_fashion_mnist_labels(y.asnumpy())
pred_labels = d2l.get_fashion_mnist_labels(net(X).argmax(axis=1).asnumpy)
titles = [true + '\n' + pred for true, pred in zip(true_labels, pred_labels)]
d2l.show_fashion_mnist(X[0:9], titles[0:9])

2. 消灭bug

我看着这个报错,当时就懵了,没看懂它啥意思。后来仔细检查代码发现,原来是调用一个函数asnumpy时,函数名后面的()掉了。于是原本我想调用的函数,被认作了一个对象,作为参数传递给了另一个函数,然后进一步引发了类型错误(TypeError)。


加上缺失的()后,一切正常。程序跑起来了:


image.png


二. 自动求梯度,求函数值了吗?


代码:


num_epochs = 3
lr = 0.1
# 用于训练模型
def train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, params=None, lr=None, trainer=None):
    for epoch in range(num_epochs):
        train_l_sum, train_acc_sum, n = 0.0, 0.0, 0
        for X, y in train_iter:
            with autograd.record():
                y_hat = net(X)
                l = loss(y_hat, y).sum()
            l.backward()
            d2l.sgd(params, lr, batch_size)
            y = y.astype('float32')
            train_l_sum += l.asscalar()
            train_acc_sum += (y_hat.argmax(axis=1) == y).sum().asscalar()
            n += y.size
        test_acc = evaluate_accuracy(test_iter, net)
        print('epoch %d, loss %.4f, train acc %.3f, test acc %.3f' % (epoch + 1, train_l_sum / n, train_acc_sum / n, test_acc))

我对于这段代码一直有些困惑,主要在train_l_sum += l.asscalar()这一语句。这里使用了变量l的值,用于计算模型在训练集上的损失。但是l的值是哪里来的?


我们看下面这段代码:


%matplotlib inline
import d2lzh as d2l
from mxnet import gluon, autograd, nd
X = nd.array([2, 3, 4])
X.attach_grad()
with autograd.record():
    y = X ** 2
# y.backward()
y, X.grad

输出:

image.png


原来在使用mxnet的自动求梯度的过程中,在y = X ** 2这一步,也就已经求出了y的值。它不仅仅是表示要求导的一个函数表达式,同时也是一个赋值语句。


小结


在一些小错误费上很多时间,真的划不来。

下次不要再这么马虎了啊。


经常有一些问题,想明白了之后,只感觉之前自己好傻。


相关文章
|
机器学习/深度学习 算法 异构计算
深度学习模型训练痛点及解决方法
## 1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的。选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 1. 定义算法公式,也就是神经网络的前向算法。我们一般使用现成的网络,如inceptionV4,mobilenet等。 2. 定义loss,选择优化器,来让loss最小 3. 对数据进行迭
10228 1
|
1月前
|
机器学习/深度学习 缓存 算法
深度学习之代码优化
基于深度学习的代码优化是一种使用深度学习技术来提升编程代码性能、减少运行时间或资源消耗的方式。通过模型学习大量代码的特征和结构,深度学习可以帮助自动化地识别和应用优化策略。
39 4
|
5月前
|
机器学习/深度学习 数据采集 图形学
基于深度学习的面片修复
面片修复(Mesh Repair)是计算机图形学和计算机视觉中的重要任务,旨在修复三维网格(mesh)中的缺陷,如孔洞、裂缝和噪声。基于深度学习的方法在面片修复中展现了强大的能力,通过学习数据中的几何特征,能够自动、高效地完成修复工作。
47 1
|
5月前
|
机器学习/深度学习 人工智能 监控
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
87 3
|
6月前
|
机器学习/深度学习 数据采集 人工智能
提升深度学习模型性能的实用技巧
【5月更文挑战第30天】在深度学习领域,构建一个高性能的模型需要超越直觉和经验。本文将深入探讨一系列实用的技术技巧,用于优化神经网络的训练过程和结构设计,进而提高模型的准确性和效率。我们将从数据预处理、网络结构调整、正则化手段以及超参数调优等方面入手,提供一套系统化的方法论,帮助研究人员和工程师们在面对各种复杂任务时,能够有效地提升其深度学习模型的性能。
|
6月前
|
机器学习/深度学习 算法 数据可视化
【传知代码】知识图谱推理-论文复现
本文探讨了基于图神经网络(GNN)的知识图谱推理,提出了一种创新的自适应传播策略AdaProp,旨在解决大规模知识图谱处理中的效率和准确性问题。AdaProp通过动态调整传播路径,优化了传统GNN方法。研究在KDD &#39;23会议上发表,提供了tensorboard可视化结果和开源代码。实验表明,AdaProp在效率和性能上超越了传统方法,如全传播、渐进式传播和受限传播。通过Python和PyTorch实现, AdaProp在多个数据集上展示了优秀性能,为知识图谱推理领域开辟了新思路。
【传知代码】知识图谱推理-论文复现
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
|
6月前
|
机器学习/深度学习 算法 数据可视化
深度学习代码通常包括以下几个主要部分
【5月更文挑战第11天】深度学习代码通常包括以下几个主要部分
32 1
|
6月前
|
机器学习/深度学习 数据采集 人工智能
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
极智AI | 教你使用深度学习模型调试器polygraphy
大家好,我是极智视界,本文讲解一下 深度学习模型调试器 polygraphy 的使用方法。
503 0