小编kHa*_*hit的帖子

PyTorch 在 TensorDataset 上进行变换

我正在使用TensorDataset从 numpy 数组创建数据集。

# convert numpy arrays to pytorch tensors
X_train = torch.stack([torch.from_numpy(np.array(i)) for i in X_train])
y_train = torch.stack([torch.from_numpy(np.array(i)) for i in y_train])

# reshape into [C, H, W]
X_train = X_train.reshape((-1, 1, 28, 28)).float()

# create dataset and dataloaders
train_dataset = torch.utils.data.TensorDataset(X_train, y_train)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64)
Run Code Online (Sandbox Code Playgroud)

如何将数据增强(转换)应用于TensorDataset

例如,使用ImageFolder,我可以将转换指定为其参数之一torchvision.datasets.ImageFolder(root, transform=...)

根据PyTorch 团队成员之一的回复,默认情况下不支持。有没有其他方法可以做到这一点?

随意询问是否需要更多代码来解释问题。

python pytorch data-augmentation

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

“RuntimeError: Found 0 files in subfolders of ".. 关于 Pytorch 中的子文件夹的错误

我目前基于 Window 10、Jupyter Notebook、Pytorch 1.0、Python 3.6.x。

首先,我使用此代码确认文件的正确路径:print(os.listdir('./Dataset/images/'))

我可以检查这条路径是否正确。

但我遇到了错误

运行时错误:在以下子文件夹中找到 0 个文件:./Dataset/images/ 支持的扩展名是:.jpg、.jpeg、.png、.ppm、.bmp、.pgm、.tif”

有什么事?你能提出一个解决方案吗?

我试着./dataset/1/images喜欢这种方法。但结果是一样的......

img_dir = './Dataset/images/'
img_data = torchvision.datasets.ImageFolder(os.path.join(img_dir), transforms.Compose([
            transforms.Scale(256),
            transforms.RandomResizedCrop(224),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
            ]))
img_batch = data.DataLoader(img_data, batch_size=batch_size,
                               shuffle = True, drop_last=True)
Run Code Online (Sandbox Code Playgroud)

python jupyter-notebook pytorch

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

除了“cuda”之外,您能否在“hip”或“OpenCL”等其他内容上加速 torch DL 训练?

我注意到torch.device可以接受一系列参数,确切地说是cpu, cuda, mkldnn, opengl, opencl, ideep, hip, msnpu

然而,在训练深度学习模型时,我只见过cuda或被cpu使用过。很多时候代码看起来像这样

if torch.cuda.is_available():
    device = torch.device("cuda")
else:
    device = torch.device("cpu")
Run Code Online (Sandbox Code Playgroud)

我从未见过其他任何人被使用,并且想知道它们是否可以使用以及如何使用。我相信配备 AMD 显卡的最新 MacBook 应该可以使用"hip",但这是真的吗?训练速度会与使用一个 CUDA GPU 相似吗?torch.device如果不是,那么如果实际上无法使用这些选项,那么接受这些选项又有什么意义呢?

gpu opencl deep-learning pytorch

9
推荐指数
1
解决办法
8945
查看次数

在 flutter dart 中对 null 调用了方法“findAncestorStateOfType”

我正在创建一个应用程序,我是扑扑,飞镖的新手。我在“上下文”中有问题。我想替换页面/屏幕 onTab()。但我有以下错误:


> ?????? Exception caught by gesture ???????????????????????? The
> following NoSuchMethodError was thrown while handling a gesture: The
> method 'findAncestorStateOfType' was called on null. Receiver: null
> Tried calling: findAncestorStateOfType<NavigatorState>()

Run Code Online (Sandbox Code Playgroud)

这是我的代码:

class Theorytest extends StatelessWidget {

    Widget  customcard(String testName ){
      return Padding(
        padding: EdgeInsets.all(10.0),
        child: InkWell(
          onTap: (){

                      Navigator.of(context).pushReplacement(MaterialPageRoute(

              builder: (context) => GetTestData(),
           ),
           );
          },
          child: Material(     
            borderRadius: BorderRadius.circular(50.0),
            elevation: 20.0,
            child : Container(
              child: Column(
                children : <Widget>[
                  Padding(
                    padding: EdgeInsets.fromLTRB(5.0, 20.0, 10.0, 20.0),
                    child: …
Run Code Online (Sandbox Code Playgroud)

exception dart flutter

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

视差和深度有什么区别?

我刚刚开始研究多视图立体视觉。

但我无法理解视差和深度(视差图和深度图)。

你能给我直觉吗?

谢谢。

computer-vision stereo-3d

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

使用 Pipenv 在 Jupyter 中出现 ModuleNotFoundError

这个周末我参加了 Python 训练营,但由于这个问题,我什至无法在我的计算机上使用 Python。我所有的导师也都被难住了。

问题是我ModuleNotFoundError在 Jupyter 上得到了多个不同的包,包括 Pandas 和 Requests(但奇怪的是,BeautifulSoup并且CSV工作正常。)

以下是我启动新 Jupyter 文件的方法:

  • 创建一个新目录
  • 使用以下命令安装 jupyter 和 pandas:pipenv install jupyter pandas
  • 激活虚拟环境:pipenv shell
  • 启动 Jupyter:jupyter 笔记本
  • 创建新的 Python 3 笔记本
  • 此时,我尝试类似的命令import pandas as pd并取回ModuleNotFoundError.

我使用的是Python 3.6.5版本。

尝试修复此问题但失败了:

  • 使用 pip graph 仔细检查 pandas 是否安装在我的虚拟环境中
  • 创建了全新的目录 pipenv install jupyter pandas --skip-lock

  • 使用以下命令卸载系统范围内的所有内容:

pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
Run Code Online (Sandbox Code Playgroud)
  • 更新了熊猫
  • 使用virtualenv代替pipenv
virtualenv first-python-notebook
cd first-python-notebook
cd Scripts
activate
cd .. …
Run Code Online (Sandbox Code Playgroud)

python jupyter jupyter-notebook pipenv

5
推荐指数
2
解决办法
2329
查看次数

Get RuntimeWarning when running Jupyter notebook and never connects to Kernel

I have a fresh install of python 3.7.2 and pip installed jupyter 4.4.0 in a fresh venv on Windows 7.0 professional. I started a Jupyter notebook and my notebook never connects to the kernel. On the command prompt, I see this error:

[I 17:41:11.959 NotebookApp] Kernel started: 35b03148-7d3e-48cb-a270-ebe959012d98
[I 17:41:14.307 NotebookApp] Adapting to protocol v5.1 for kernel 35b03148-7d3e-48cb-a270-ebe959012d98
<full path masked>...\py372venv\lib\site-packages\notebook\base\zmqhandlers.py:284: RuntimeWarning: coroutine 'WebSocketHandler.get' was never awaited
  super(AuthenticatedZMQStreamHandler, self).get(*args, **kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
[W …
Run Code Online (Sandbox Code Playgroud)

python-3.x jupyter jupyter-notebook

5
推荐指数
1
解决办法
1350
查看次数

如何根据 PyTorch 中的概率计算交叉熵?

默认情况下,PyTorchcross_entropy采用 logits(模型的原始输出)作为输入。我知道将(log(softmax(x))) 和(负对数似然损失)CrossEntropyLoss结合在一个类中。所以,我想我可以用如下方法从概率中获得交叉熵损失:LogSoftmaxNLLLossNLLLoss

真实标签:[1, 0, 1]
概率:[0.1, 0.9], [0.9, 0.1], [0.2, 0.8]

在此输入图像描述

其中,y_i,j表示真实值,即如果样本i属于类别,则为1 j,否则为 0。并表示属于 类 的p_i,j样本模型预测的概率。ij

如果我手工计算的话,结果是:

>>> -(math.log(0.9) + math.log(0.9) + math.log(0.8))
0.4338
Run Code Online (Sandbox Code Playgroud)

使用 PyTorch:

>>> labels = torch.tensor([1, 0, 1], dtype=torch.long)
>>> probs = torch.tensor([[0.1, 0.9], [0.9, 0.1], [0.2, 0.8]], dtype=torch.float)
>>> F.nll_loss(torch.log(probs), labels)
tensor(0.1446)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?为什么答案不同?

deep-learning cross-entropy pytorch loss-function

5
推荐指数
1
解决办法
4732
查看次数

当批量大小不是train_size的因素时,将loss().item乘以batch_size来获得批量的损失是一个好主意吗?

假设我们有 100 个图像且批量大小为 15 的问题。除了最后一个批次包含 10 个图像之外,所有批次中都有 15 个图像。

假设我们的网络训练为:

network = Network()
optimizer = optim.Adam(network.parameters(),lr=0.001)

for epoch in range(5):

    total_loss = 0

    train_loader = torch.utils.data.DataLoader(train_set,batch_size=15) 

    for batch in train_loader: 
        images,labels = batch

        pred = network(images)
        loss = F.cross_entropy(pred,labels)

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        total_loss+= loss.item()*15

Run Code Online (Sandbox Code Playgroud)

最后一批不是总是应该给我们一个增加的值,loss因为我们将乘以 15,而我们应该在最后一批中乘以 10?它不应该 total_loss+= loss.item()*len(images)代替 15 或batch_size??

我们可以使用

for every epoch:
    for every batch:
        loss = F.cross_entropy(pred,labels,reduction='sum')
        total_loss+=loss.item()

    avg_loss_per_epoch = (total_loss/len(train_set))      
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下乘以batch_size一个好主意吗?我怎么错了?

loss pytorch loss-function

5
推荐指数
1
解决办法
3158
查看次数

PyTorch:state_dict和parameters()有什么区别?

为了在pytorch中访问模型的参数,我看到了两种方法:

使用state_dict使用parameters()

我不知道有什么区别,或者一个是好的做法,另一个是不好的做法。

谢谢

python machine-learning deep-learning pytorch

4
推荐指数
1
解决办法
817
查看次数

PyTorch 中相同形状的掩蔽张量

给定一个相同形状的数组和掩码,我想要相同形状的掩码输出并包含 0,其中掩码为 False。

例如,

# input array
img = torch.randn(2, 2)
print(img)
# tensor([[0.4684, 0.8316],
#        [0.8635, 0.4228]])
print(img.shape)
# torch.Size([2, 2])

# mask
mask = torch.BoolTensor(2, 2)
print(mask)
# tensor([[False,  True],
#        [ True,  True]])
print(mask.shape)
# torch.Size([2, 2])

# expected masked output of shape 2x2
# tensor([[0, 0.8316],
#        [0.8635, 0.4228]])
Run Code Online (Sandbox Code Playgroud)

问题:遮罩会按如下方式更改输出的形状:

#1: shape changed
img[mask]
# tensor([0.8316, 0.8635, 0.4228])
Run Code Online (Sandbox Code Playgroud)

python pytorch

4
推荐指数
1
解决办法
7155
查看次数

使用 cmap 在 opencv 中保存 16 位图像(cv::ColorMap 仅支持函数“operator()”中 CV_8UC1 或 CV_8UC3 类型的源图像)

我正在尝试使用 cmap 在 opencv 中保存/显示 16 位 numpy 数组(如图像),但它不起作用。另一方面,它在 matplotlib 中运行顺利。

我的深度学习模型给出了一个 numpy 数组arr( <class 'numpy.ndarray'>)。你可以从这里得到它。

# np array predicted from a depth model
>>> arr16 = np.load('pred_depth_scale.npy')
>>> arr16.dtype, arr16.shape
(dtype('uint16'), (466, 492))
>>> cv2.imshow('img', arr16)
# shows image in grayscale
Run Code Online (Sandbox Code Playgroud)

uint16_cv2_imshow

我想将其转换为其他颜色图:

>>> arr16 = cv2.applyColorMap(arr16, cv2.COLORMAP_COOL)
Run Code Online (Sandbox Code Playgroud)

它抛出以下错误:

错误:OpenCV(4.1.0) /io/opencv/modules/imgproc/src/colormap.cpp:684: 错误:(-5:Bad argument) cv::ColorMap 仅支持函数 ' 中类型为 CV_8UC1 或 CV_8UC3 的源图像操作员()'

现在,如果我将图像转换为uint8,则图像包含噪声。

>>> arr8 = arr16.astype(np.uint8)
>>> arr8 = cv2.applyColorMap(arr8, cv2.COLORMAP_COOL)
>>> cv2.imshow('img', …
Run Code Online (Sandbox Code Playgroud)

python opencv numpy matplotlib

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