我正在使用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 团队成员之一的回复,默认情况下不支持。有没有其他方法可以做到这一点?
随意询问是否需要更多代码来解释问题。
我目前基于 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) 我注意到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如果不是,那么如果实际上无法使用这些选项,那么接受这些选项又有什么意义呢?
我正在创建一个应用程序,我是扑扑,飞镖的新手。我在“上下文”中有问题。我想替换页面/屏幕 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) 我刚刚开始研究多视图立体视觉。
但我无法理解视差和深度(视差图和深度图)。
你能给我直觉吗?
谢谢。
这个周末我参加了 Python 训练营,但由于这个问题,我什至无法在我的计算机上使用 Python。我所有的导师也都被难住了。
问题是我ModuleNotFoundError在 Jupyter 上得到了多个不同的包,包括 Pandas 和 Requests(但奇怪的是,BeautifulSoup并且CSV工作正常。)
以下是我启动新 Jupyter 文件的方法:
import pandas as pd并取回ModuleNotFoundError.我使用的是Python 3.6.5版本。
尝试修复此问题但失败了:
创建了全新的目录
pipenv install jupyter pandas --skip-lock
使用以下命令卸载系统范围内的所有内容:
pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
Run Code Online (Sandbox Code Playgroud)
virtualenv first-python-notebook
cd first-python-notebook
cd Scripts
activate
cd .. …Run Code Online (Sandbox Code Playgroud) 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) 默认情况下,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)
我究竟做错了什么?为什么答案不同?
假设我们有 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一个好主意吗?我怎么错了?
给定一个相同形状的数组和掩码,我想要相同形状的掩码输出并包含 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) 我正在尝试使用 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)
我想将其转换为其他颜色图:
>>> 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)