标签: pytorch

将模型从 3 通道 (RGB) 重新训练为 4 通道 (RGBA),我可以使用 3 通道权重吗?

我需要将模型从 RGB 扩展到 RGBA。我可以处理模型上的代码重写,但我不想从头开始重新训练整个模型,而是希望从 3 个通道权重 + 零开始。

有没有简单的方法可以将手电筒的 3 个通道权重保存更改为 4 个?

python rgba pytorch

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

“BCEWithLogitsLoss”中“pos_weight”参数有什么影响?

根据 的pytorch 文档nn.BCEWithLogitsLosspos_weight一个可选参数 a,它采用正例的权重。我不完全理解该页面中的陈述“pos_weight > 1 增加召回率,pos_weight < 1 增加精度”。大家怎么理解这个说法呢?

machine-learning pytorch

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

如何将带有亮度的数据增强添加到图像分类框架中?

我正在使用 pytorch 使用github中的代码进行图像分类。我需要在训练我的模型之前添加数据增强,我选择了albumentation来执行此操作。这是我添加专辑时的代码:

data_transform = {
    "train": A.Compose([ 
                        A.RandomResizedCrop(224,224),
                        A.HorizontalFlip(p=0.5),
                        A.RandomGamma(gamma_limit=(80, 120), eps=None, always_apply=False, p=0.5),
                        A.RandomBrightnessContrast (p=0.5),
                        A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), always_apply=False, p=0.5),
                        A.ShiftScaleRotate(shift_limit=0.05, scale_limit=0.05, rotate_limit=15, p=0.5),
                        A.RGBShift(r_shift_limit=15, g_shift_limit=15, b_shift_limit=15, p=0.5),
                        A.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
                        ToTensorV2(),]),
    "val": A.Compose([
                      A.Resize(256,256),
                      A.CenterCrop(224,224),
                      A.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
                      ToTensorV2()])}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

KeyError:在 DataLoader 工作进程 0 中捕获 KeyError。

KeyError:“您必须将数据作为命名参数传递给增强,例如:aug(image=image)”

python pytorch data-augmentation albumentations image-classification

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

Pytorch RuntimeError:预期标量类型 Double 但发现 Float

我刚刚开始学习 Pytorch 并创建了我的第一个 LSTM。数据集是时间序列数据。下面是训练代码。使用 .double() 并不能修复错误。它在Windows 11环境中运行。

import torch
import torch.nn as nn
from torch.optim import SGD
import math
import numpy as np

class Predictor(nn.Module):
    def __init__(self, inputDim, hiddenDim, outputDim):
        super(Predictor, self).__init__()

        self.rnn = nn.LSTM(input_size = inputDim,
                            hidden_size = hiddenDim,
                            batch_first = True)
        self.output_layer = nn.Linear(hiddenDim, outputDim)
    
    def forward(self, inputs, hidden0=None):
        output, (hidden, cell) = self.rnn(inputs, hidden0)
        output = self.output_layer(output[:, -1, :])

        return output

def mkDataSet(train_x, train_y=None):

    t_train_x = []
    t_train_y = []


    sequence_length = 50
    data_length = train_x.shape[0]

    for …
Run Code Online (Sandbox Code Playgroud)

python lstm pytorch

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

self.model(batch) 在 pytorch 中做什么?

我目前正在将 PyTorch 代码重写为张量流。在此过程中,我发现了一行我不明白的内容,因此我无法将其翻译为张量流。

有人可以解释一下这是什么意思吗?

self.model(batch)
Run Code Online (Sandbox Code Playgroud)

python pytorch

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

为什么 Tensorflow 和 Pytorch CrossEntropy 损失对于同一示例返回不同的值

我尝试过使用 Tensorflow 和 Pytorch CrossEntropyLoss 但它返回不同的值,我不知道为什么。请找到下面的代码和结果。感谢您的投入和帮助。

import tensorflow as tf
import numpy as np

y_true = [3, 3, 1]
y_pred = [
    [0.3377, 0.4867, 0.8842, 0.0854, 0.2147],
    [0.4853, 0.0468, 0.6769, 0.5482, 0.1570],
    [0.0976, 0.9899, 0.6903, 0.0828, 0.0647]
]

scce3 = tf.keras.losses.SparseCategoricalCrossentropy(reduction=tf.keras.losses.Reduction.AUTO)
loss3 = scce3(y_true, y_pred).numpy()
print(loss3)
Run Code Online (Sandbox Code Playgroud)

上面的结果是:1.69

火炬损失:

from torch import nn
import torch
loss = nn.CrossEntropyLoss()
y_true = torch.Tensor([3, 3, 1]).long()
y_pred = torch.Tensor([
    [0.3377, 0.4867, 0.8842, 0.0854, 0.2147],
    [0.4853, 0.0468, 0.6769, 0.5482, 0.1570],
    [0.0976, 0.9899, 0.6903, 0.0828, 0.0647] …
Run Code Online (Sandbox Code Playgroud)

python loss tensorflow cross-entropy pytorch

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

使用pytorch从RGB转换为LAB?Opencv的颜色转换与自己的公式不符

为了加速我过去的一些 opencv/numpy 支持的操作,我尝试将它们转换为 PyTorch,以便在 GPU 上运行。其中第一个步骤是将 RGB 转换为 LAB。

我提到:

我已经成功地生成了这段代码:

import torch

def tensor_like(source_data, target_tensor):
    return torch.tensor(
        source_data,
        device=target_tensor.device,
        dtype=target_tensor.dtype,
    )


RGB_TO_XYZ_FACTOR_MATRIX = [
    [0.412453, 0.357580, 0.180423],
    [0.212671, 0.715160, 0.072169],
    [0.019334, 0.119193, 0.950227],
]


def cie_f(input_: torch.Tensor):
    e = 6 / 29
    return torch.where(
        input_ > e ** 3,
        input_ ** (1 / 3),
        input_ / (3 * e ** 2) + 4 / …
Run Code Online (Sandbox Code Playgroud)

python opencv pytorch

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

如何将torch集成到docker镜像中,同时保持镜像大小合理?

所以我有一个 Flask Web 应用程序,它将公开一些深度学习模型。

我构建了图像,一切正常。

问题是这张图片的大小是5.58GB!这有点荒谬。

我有一些在构建过程中复制的深度学习模型,我认为它们可能是罪魁祸首,但它们的大小总和并没有超过,300MB所以绝对不是它。

在检查历史记录和每层的大小后,我发现了这一点:

  • RUN /bin/sh -c pip install -r requirements.txt占用771MB
  • RUN /bin/sh -c pip install torch==1.10.2占用2.8GB
  • RUN /bin/sh -c apt-get install ffmpeg libsm6 libxext6占用400MB

那么如何在保持图像大小合理的同时合并这些库呢?在 python 中部署机器学习模型时,可以使用这些大小的图像吗?

下面是root directory

在此输入图像描述

Dockerfile

FROM python:3.7.13
WORKDIR /app 
COPY ["rdm.pt", "autosort_model.pt", "rotated_model.pt", "yolov5x6.pt", "/app/"]
RUN pip install torch==1.10.2
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 …
Run Code Online (Sandbox Code Playgroud)

python docker pytorch

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

如何有条件地使用命令“with”而不重复代码

我试图with在执行代码块之前使用,但前提是满足条件,但(至少常见)的用法with似乎不支持这一点,除非我复制该代码块。

更具体地说,我知道我可以执行以下操作:

if condition:
    with blah_blah():
        my_code_block
else:
    my_code_block
Run Code Online (Sandbox Code Playgroud)

但这在开发过程中并不令人满意,因为我所做的任何更改都my_code_block必须进行两次。我想做的(概念上)是:

if condition:
    with blah_blah():
else:
    my_code_block
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。有办法完成我想做的事情吗?

对于任何对我的特定用途感兴趣的人,我正在尝试编写在 pytorch 中运行一批示例的代码,如果我处于评估模式,则使用 torch.no_grad() ;如果我处于训练模式,则不使用 torch.no_grad() 。所以我想做的就变成了

if mode == 'eval':
    with torch.no_grad():
else:
    run_batch(features, labels)
Run Code Online (Sandbox Code Playgroud)

python with-statement pytorch

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

如何在 Windows 11 (CUDA 12) 上安装支持 CUDA 的 PyTorch?- 未找到匹配的分布

我正在尝试在我的 Windows 11 计算机上安装支持 CUDA 的 PyTorch,该计算机已安装 CUDA 12 和 python 3.10。当我运行 nvcc --version 时,我得到以下输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:09:35_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0

Run Code Online (Sandbox Code Playgroud)

我想安装具有 CUDA 支持的 PyTorch 版本 2.0.0,因此我尝试运行以下命令:

python -m pip install torch==2.0.0+cu117
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了以下错误:

ERROR: Could not find a version that satisfies the requirement torch==2.0.0+cu117 (from versions: 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 2.0.0, 2.0.1)
ERROR: No matching distribution found for torch==2.0.0+cu117
Run Code Online (Sandbox Code Playgroud)

有没有人有什么建议?

python dependencies pip pytorch

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