我需要将模型从 RGB 扩展到 RGBA。我可以处理模型上的代码重写,但我不想从头开始重新训练整个模型,而是希望从 3 个通道权重 + 零开始。
有没有简单的方法可以将手电筒的 3 个通道权重保存更改为 4 个?
根据 的pytorch 文档,nn.BCEWithLogitsLoss
是pos_weight
一个可选参数 a,它采用正例的权重。我不完全理解该页面中的陈述“pos_weight > 1 增加召回率,pos_weight < 1 增加精度”。大家怎么理解这个说法呢?
我正在使用 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
我刚刚开始学习 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) 我目前正在将 PyTorch 代码重写为张量流。在此过程中,我发现了一行我不明白的内容,因此我无法将其翻译为张量流。
有人可以解释一下这是什么意思吗?
self.model(batch)
Run Code Online (Sandbox Code Playgroud) 我尝试过使用 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) 为了加速我过去的一些 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) 所以我有一个 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) 我试图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) 我正在尝试在我的 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)
有没有人有什么建议?
pytorch ×10
python ×9
dependencies ×1
docker ×1
loss ×1
lstm ×1
opencv ×1
pip ×1
rgba ×1
tensorflow ×1