小编Jon*_*wer的帖子

将 pytorch 数据加载器加载到 GPU 中

有没有办法将 pytorch DataLoader ( torch.utils.data.Dataloader) 完全加载到我的 GPU 中?

现在,我将每个批次分别加载到我的 GPU 中。

CTX = torch.device('cuda')

train_loader = torch.utils.data.DataLoader(
    train_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,
    num_workers=0,
)

net = Net().to(CTX)
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=LEARNING_RATE)

for epoch in range(EPOCHS):
    for inputs, labels in test_loader:
        inputs = inputs.to(CTX)        # this is where the data is loaded into GPU
        labels = labels.to(CTX)        

        optimizer.zero_grad()

        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

    print(f'training accuracy: {net.validate(train_loader, device=CTX)}/{len(train_dataset)}')
    print(f'validation accuracy: {net.validate(test_loader, device=CTX)}/{len(test_dataset)}')
Run Code Online (Sandbox Code Playgroud)

其中Net.validate()函数由下式给出

def …
Run Code Online (Sandbox Code Playgroud)

python gpu pytorch dataloader

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

将YUV导入为字节数组

我正在一个项目中,必须对YUV420_SP_NV21图像(从Android摄像头拍摄)应用阈值,以确定哪些像素为“黑色”,哪些像素为“白色”。

因此,我想将其作为字节数组在Python中导入(使用OpenCV,NumPy,PIL等),以便可以对Y值进行一些快速的按位运算。



但是,当我尝试使用以下方法导入图像时,会得到无用的输出:

当我打字

import cv2
import numpy as np

img = cv2.imread('test.yuv')
imgArr = np.array(img)

print(img)
print(imgArr)
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

None
None
Run Code Online (Sandbox Code Playgroud)



当我键入

import numpy as np

f = open('test.yuv', 'rb')
img = f.read()
imgArr = np.array(img)
Run Code Online (Sandbox Code Playgroud)

我得到一些无用的字符序列。
当我现在输入时(例如)

print(imgArr[0])
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

IndexError: too many indices for array
Run Code Online (Sandbox Code Playgroud)

这意味着imgArr根本没有数组!



谁能告诉我我在做什么错?提前致谢!

python numpy yuv

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

Haskell 向构造函数添加约束

背景:
我正在学习关于“语言和自动机”的课程:目前它是关于正则表达式/语言、DFA 和 NFA。这个问题不是家庭作业,而是我决定为自己做的一些事情在 Haskell 中的实现。回答这个问题只需要 Haskell 的知识


我有以下正则表达式的数据类型

data Regex sigma = Eps
    | Phi
    | S sigma
    | Regex sigma :. Regex sigma
    | Regex sigma :| Regex sigma
    deriving (Show,Eq,Read)
Run Code Online (Sandbox Code Playgroud)

有了这个,我们可以定义正则表达式,例如S 'a', or S 'a' :. S 'b', or Eps :| S 'a'。到现在为止还挺好。

现在,Eps(空字符串)应该是 的中性元素:.。即Eps :. ee :. Eps都应该返回ee任何其他正则表达式在哪里)。

所以我想将模式匹配应用于构造函数(:.)。这可能吗?如果是这样,我该如何实施?如果没有,还有什么方法可以实现我想要的?

我试图显式定义构造函数以应用模式匹配:

(:.) :: Regex sigma -> Regex sigma -> …
Run Code Online (Sandbox Code Playgroud)

constructor haskell formal-languages

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