我正在训练一个 CNN 来预测手上的关节。问题是我的网络总是收敛到训练集的均值,对于不同的测试图像我只能得到相同的结果。你知道如何防止这种情况吗?
我有 3TB 数据集和 64GB RAM 以及一个 12 核 CPU 和一个 12GB GPU。想在这个数据集上训练一个深度学习模型。如何异步加载批次和模型训练?我想确保数据的磁盘加载不会阻止训练循环等待新批次加载到内存中。
我不依赖于语言,并且是最简单的库,可以在没有摩擦的情况下做到这一点,但我更喜欢torch、pytorch、tensorflow 之一。
我有一个名为: 的图像Image和一个名为:的正在运行的容器container。我想安装pytorch和anacoda。最简单的方法是什么?我是否必须更改dockerfile并构建新映像?非常感谢。
我是 PyTorch 的新手,在使用不同的工具包一段时间后尝试了一下。
我想了解如何编写自定义图层和函数。作为一个简单的测试,我写了这个:
class Testme(nn.Module): ## it _is_ a sublcass of module ##
def __init__(self):
super(Testme, self).__init__()
def forward(self, x):
return x / t_.max(x)
Run Code Online (Sandbox Code Playgroud)
这旨在使通过它的数据总和为 1。实际上没有用,只是在测试中。
然后我将其插入 PyTorch Playground 中的示例代码:
def make_layers(cfg, batch_norm=False):
layers = []
in_channels = 3
for i, v in enumerate(cfg):
if v == 'M':
layers += [nn.MaxPool2d(kernel_size=2, stride=2)]
else:
padding = v[1] if isinstance(v, tuple) else 1
out_channels = v[0] if isinstance(v, tuple) else v
conv2d = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=padding)
if batch_norm:
layers += …Run Code Online (Sandbox Code Playgroud) 有人可以提供完整的工作代码(不是片段,而是在可变长度循环神经网络上运行的代码),说明您将如何使用 PyTorch 中的 PackedSequence 方法?
文档、github 或 Internet 中似乎没有任何此类示例。
我在激活虚拟环境时使用 conda 命令安装了 pytorch。
但是,在 Jupyter Notebook 中导入火炬模块时出现了一些问题。
我在提示符和 Jupyter Notebook 中都检查了 sys.path。
嗯..在提示中,结果sys.path是
['', '/home/usrname/anaconda3/lib/python36.zip',
'/home/usrname/anaconda3/lib/python3.6',
'/home/usrname/anaconda3/lib/python3.6/lib-dynload',
'/home/usrname/anaconda3/lib/python3.6/site-packages']
Run Code Online (Sandbox Code Playgroud)
导入火炬模块时没有错误。
但是,在 jupyter 笔记本(在 chrome 中执行)中,sys.path是
['',
'/home/usrname/anaconda3/lib/python36.zip',
'/home/usrname/anaconda3/lib/python3.6',
'/home/usrname/anaconda3/lib/python3.6/lib-dynload',
'/home/usrname/anaconda3/lib/python3.6/site-packages',
'/home/usrname/anaconda3/lib/python3.6/site-packages/IPython/extensions',
'/home/usrname/.ipython']
Run Code Online (Sandbox Code Playgroud)
我看到一个错误: No module named 'torch'
我无法解决这个问题...
我想在 Google Colab 上安装 Torch ( http://torch.ch/docs/getting-started.html#_ )。但是,要安装 Torch,我们需要在最后一步运行以下命令source ~/.bashrc
要在 google colab 上运行此命令,我使用的代码是
%%bash
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
当我运行这些时,我收到警告
bash: 第 1 行: /content/.bashrc: 没有那个文件或目录
我也用这个命令来查找 bashrc
!find / -name '*bashrc'
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出
/root/.bashrc
/etc/skel/.bashrc
/etc/bash.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
我尝试source在所有这些路径上运行命令。我也尝试与.profile. 但是仍然没有安装 Torch。
编辑:我不确定是否安装了 Torch。这里的具体问题是我刚刚收到一个错误
找不到相关命令
每当我跑步th或luarocks
我正在尝试运行以下代码:
import matplotlib.pylab as plt
import numpy as np
import torch
import torch.nn as nn
class LSTM(nn.Module):
def __init__(self, input_shape, n_actions):
super(LSTM, self).__init__()
self.lstm = nn.LSTM(input_shape, 12)
self.hidden2tag = nn.Linear(12, n_actions)
def forward(self, x):
out = self.lstm(x)
out = self.hidden2tag(out)
return out
state = [(1,2,3,4,5),(2,3,4,5,6),(3,4,5,6,7),(4,5,6,7,8),(5,6,7,8,9),(6,7,8,9,0)]
device = torch.device("cuda")
net = LSTM(5, 3).to(device)
state_v = torch.FloatTensor(state).to(device)
q_vals_v = net(state_v.view(1, state_v.shape[0], state_v.shape[1]))
_, action = int(torch.max(q_vals_v, dim=1).item())
Run Code Online (Sandbox Code Playgroud)
并返回此错误:
import matplotlib.pylab as plt
import numpy as np
import torch
import torch.nn as nn …Run Code Online (Sandbox Code Playgroud) torchvision 包提供了对常用数据集的轻松访问。你会像这样使用它们:
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,
download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
shuffle=False, num_workers=2)
Run Code Online (Sandbox Code Playgroud)
显然,您只能在train=True和之间切换train=False。该文档解释:
train (bool, optional) – 如果为 True,则从 training.pt 创建数据集,否则从 test.pt。
但这与三路拆分的常见做法背道而驰。对于严肃的工作,我需要另一个DataLoader带有验证集的。此外,最好自己指定拆分比例。他们没有说明保留用于测试的数据集的百分比,也许我想改变它。
我认为这是一个有意识的设计决定。处理这些数据集之一的每个人都应该使用相同的测试集。这使得结果具有可比性。但我仍然需要从trainloader. 是否可以将 a 拆分DataLoader为两个单独的数据流?
在C ++版本的Libtorch中,我发现可以通过来获得float张量的值*tensor_name[0].data<float>(),在其中0我可以使用任何其他有效索引代替。但是,当我int通过at::kInt在张量创建中添加选项来定义张量时,我无法使用此结构来获取张量的值,即类似*tensor_name[0].data<at::kInt>()或*tensor_name[0].data<int>()不起作用的内容,调试器会不断说Couldn't find method at::Tensor::data<at::kInt>或Couldn't find method at::Tensor::data<int>。我可以通过获取值auto value_array = tensor_name=accessor<int,1>(),但是使用起来更容易*tensor_name[0].data<int>()。您能告诉我如何使用张data<>()量值int吗?
我的类型也有同样的问题bool。
谢谢,阿夫申