小编Ber*_*iel的帖子

在pytorch中使用交叉熵损失时,我应该使用softmax作为输出吗?

我在对pytorch 中的 MNIST 数据集的2 个隐藏层的全连接深度神经网络进行分类时遇到问题。

我想在两个隐藏层中都使用tanh作为激活,但最后,我应该使用softmax

对于损失,我选择nn.CrossEntropyLoss()了 PyTORch,它(正如我发现的那样)不想将单热编码标签作为真正的标签,而是采用 LongTensor 类。

我的模型是nn.Sequential(),当我最终使用 softmax 时,它在测试数据的准确性方面给了我更糟糕的结果。为什么?

import torch
from torch import nn

inputs, n_hidden0, n_hidden1, out = 784, 128, 64, 10
n_epochs = 500
model = nn.Sequential(
    nn.Linear(inputs, n_hidden0, bias=True), 
    nn.Tanh(),
    nn.Linear(n_hidden0, n_hidden1, bias=True),
    nn.Tanh(),
    nn.Linear(n_hidden1, out, bias=True),
    nn.Softmax()  # SHOULD THIS BE THERE?
)
                 
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.5)

for epoch in range(n_epochs):
    y_pred = model(X_train)
    loss = criterion(y_pred, …
Run Code Online (Sandbox Code Playgroud)

python mnist softmax pytorch

19
推荐指数
1
解决办法
1万
查看次数

点云库,两点云的强大注册

我需要找到两个三维点云之间的变换和旋转差异.为此,我正在寻找PCL,因为它看起来很理想.

关于干净的测试数据我有迭代最近点工作,但给出了奇怪的结果(虽然我可能已经错误地实现了...)我有pcl::estimateRigidTransformation工作,看起来更好,虽然我认为会更糟糕的数据噪音.

我的问题是:

这两个云会很吵,虽然它们应该包含相同的点,但会有一些差异.处理这个问题的最佳方法是什么?

我应该在两个云中找到相应的功能开始然后使用estimateTransform吗?或者我应该看一个RANSAC删除异常值的函数?是ICP一个更好的方式去estimateRigidTransform

c++ point-clouds point-cloud-library

16
推荐指数
2
解决办法
1万
查看次数

如何修复“AttributeError: 'JpegImageFile' 对象没有属性 'read'?

我是初学者,正在学习编写图像分类器。我的目标是创建一个预测函数。

有什么建议可以修复它吗?

在这个项目中,我想使用预测功能来识别不同的花种。所以我可以稍后检查他们的标签。

尝试修复:不幸的是,错误仍然存​​在。我已经尝试过这些代码:

img = process_image(Image.open(image))
img = torch.from_numpy(img).type(torch.FloatTensor) 
Run Code Online (Sandbox Code Playgroud)

这是我现在需要修复的错误。

AttributeError: 'JpegImageFile' 对象没有属性 'read'

代码:

# Imports here
import pandas as pd
import numpy as np

import torch
from torch import nn
from torchvision import datasets, transforms, models
import torchvision.models as models
import torch.nn.functional as F
import torchvision.transforms.functional as F
from torch import optim
import json

from collections import OrderedDict
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from PIL import Image

def …
Run Code Online (Sandbox Code Playgroud)

python image python-imaging-library

11
推荐指数
1
解决办法
2万
查看次数

如何处理UserWarning:将稀疏的IndexedSlices转换为未知形状的密集Tensor

我在Tensorflow中收到以下警告:UserWarning:将稀疏的IndexedSlices转换为未知形状的密集Tensor.这可能会消耗大量内存.

我得到这个的原因是:

import tensorflow as tf
# Flatten batch elements to rank-2 tensor where 1st max_length rows 
    #belong to first batch element and so forth
all_timesteps = tf.reshape(raw_output, [-1, n_dim])  # (batch_size*max_length, n_dim)
# Indices to last element of each sequence.
# Index to first element is the sequence order number times max 
    #sequence length.
# Index to last element is the index to first element plus sequence 
    #length.
row_inds = tf.range(0, batch_size) * max_length + (seq_len - 1)
# …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

8
推荐指数
1
解决办法
6794
查看次数

ValueError:使用 env:// rendezvous 初始化 torch.distributed 时出错:需要环境变量 MASTER_ADDR,但未设置

我无法在 PyTorch 中为 BERT 模型初始化组进程,我曾尝试使用以下代码进行初始化:

import torch
import datetime

torch.distributed.init_process_group(
    backend='nccl',
    init_method='env://',
    timeout=datetime.timedelta(0, 1800),
    world_size=0,
    rank=0,
    store=None,
    group_name=''
)
Run Code Online (Sandbox Code Playgroud)

并尝试访问该get_world_size()功能:

num_train_optimization_steps = num_train_optimization_steps // torch.distributed.get_world_size()
Run Code Online (Sandbox Code Playgroud)

完整代码:

train_examples = None
    num_train_optimization_steps = None
    if do_train:
        train_examples = processor.get_train_examples(data_dir)
        num_train_optimization_steps = int(
            len(train_examples) / train_batch_size / gradient_accumulation_steps) * num_train_epochs
        if local_rank != -1:
            import datetime
            torch.distributed.init_process_group(backend='nccl',init_method='env://', timeout=datetime.timedelta(0, 1800), world_size=0, rank=0, store=None, group_name='')
            num_train_optimization_steps = num_train_optimization_steps // torch.distributed.get_world_size()
            print(num_train_optimization_steps)
Run Code Online (Sandbox Code Playgroud)

python pytorch

8
推荐指数
2
解决办法
3万
查看次数

未捕获的ReferenceError:未使用facebook API定义checkLoginState

我一直在尝试修复此代码,但我在控制台上遇到此错误:

未捕获的ReferenceError:未定义checkLoginState.

我只是按照这个指南.这是我的函数代码,当我调用它时:

function checkLoginState() {
  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });
}


<fb:login-button data-max-rows="1" data-size="large" data-show-faces="false" data-auto-logout-link="true" onlogin="checkLoginState();" scope="public_profile, pages_show_list"></fb:login-button>
Run Code Online (Sandbox Code Playgroud)

html javascript php api facebook

7
推荐指数
1
解决办法
5766
查看次数

Pytorch 中的缓冲区是什么?

我了解register_buffer 的作用以及register_buffer 和 register_parameters之间的区别。

但是 PyTorch 中缓冲区的准确定义是什么?

python pytorch

7
推荐指数
1
解决办法
2477
查看次数

PyTorch 中是否有将卷积转换为全连接网络形式的函数?

我正在尝试将卷积层转换为全连接层。

例如,有一个 3×3 输入和 2x2 内核的例子:

输入和内核

这相当于向量矩阵乘法?

向量矩阵乘法

PyTorch 中是否有获取矩阵 B 的函数?

neural-network conv-neural-network pytorch

6
推荐指数
1
解决办法
2379
查看次数

PyTorch DataLoader - “IndexError:0 维张量的索引太多”

我正在尝试实现一个 CNN 来识别 MNIST 数据集中的数字,而我的代码在数据加载过程中出现了错误。我不明白为什么会这样。

import torch
import torchvision
import torchvision.transforms as transforms

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5), (0.5))
])

trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=20, shuffle=True, num_workers=2)

testset = torchvision.datasets.MNIST(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=20, shuffle=False, num_workers=2)

for i, data in enumerate(trainloader, 0):
    inputs, labels = data[0], data[1]
Run Code Online (Sandbox Code Playgroud)

错误:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-b37c638b6114> in <module>
      2 
----> 3     for i, data in enumerate(trainloader, 0):
      4         inputs, labels = data[0], …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pytorch

6
推荐指数
1
解决办法
2万
查看次数

PyTorch 数据加载器显示字符串数据集的奇怪行为

我正在研究 NLP 问题并使用 PyTorch。由于某种原因,我的数据加载器返回格式错误的批次。我的输入数据包含句子和整数标签。这些句子可以是句子列表或标记列表列表。稍后我将在下游组件中将标记转换为整数。

list_labels = [ 0, 1, 0]

# List of sentences.
list_sentences = [ 'the movie is terrible',
                   'The Film was great.',
                   'It was just awful.']

# Or list of list of tokens.
list_sentences = [['the', 'movie', 'is', 'terrible'],
                  ['The', 'Film', 'was', 'great.'],
                  ['It', 'was', 'just', 'awful.']]
Run Code Online (Sandbox Code Playgroud)

我创建了以下自定义数据集:

import torch
from torch.utils.data import DataLoader, Dataset

class MyDataset(torch.utils.data.Dataset):

    def __init__(self, sentences, labels):

        self.sentences = sentences
        self.labels = labels

    def __getitem__(self, i):
        result = {}
        result['sentences'] = …
Run Code Online (Sandbox Code Playgroud)

python pytorch dataloader

6
推荐指数
1
解决办法
5156
查看次数