为啥我的unity5.4一个对象不能同时运行多个脚本了,inspector里面三个脚本都打了对号,但只运行一个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的unity5.4一个对象不能同时运行多个脚本了,inspector里面三个脚本都打了对号,但只运行一个相关的知识,希望对你有一定的参考价值。

是我编程问题,已经解决了

参考技术A 这个所有脚本都会运行的……

为啥我的简单 pytorch 网络不能在 GPU 设备上运行?

【中文标题】为啥我的简单 pytorch 网络不能在 GPU 设备上运行?【英文标题】:Why doesn't my simple pytorch network work on GPU device?为什么我的简单 pytorch 网络不能在 GPU 设备上运行? 【发布时间】:2019-01-07 09:47:42 【问题描述】:

我根据教程构建了一个简单的网络,但出现此错误:

RuntimeError:预期的类型为 torch.cuda.FloatTensor 的对象,但已找到 为参数 #4 'mat1' 输入 torch.FloatTensor

有什么帮助吗?谢谢!

import torch
import torchvision

device = torch.device("cuda:0")
root = '.data/'

dataset = torchvision.datasets.MNIST(root, transform=torchvision.transforms.ToTensor(), download=True)

dataloader = torch.utils.data.DataLoader(dataset, batch_size=4)


class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.out = torch.nn.Linear(28*28, 10)

    def forward(self, x):
        x = x.view(x.size(0), -1)
        x = self.out(x)
        return x

net = Net()
net.to(device)

for i, (inputs, labels) in enumerate(dataloader):
    inputs.to(device)
    out = net(inputs)

【问题讨论】:

这个问题是关于 PyTorch,而不是 CUDA。这就是我删除标签的原因。两次。请不要再添加了 【参考方案1】:

TL;DR 这是解决方法

inputs = inputs.to(device)  

为什么?!torch.nn.Module.to()torch.Tensor.to() 之间存在细微差别:Module.to()就地 运算符,Tensor.to() 不是。因此

net.to(device)

更改net 本身并将其移动到device。另一方面

inputs.to(device)

不更改inputs,而是返回inputs副本,该inputs 位于device。要使用该“设备上”副本,您需要将其分配给一个变量,因此

inputs = inputs.to(device)

【讨论】:

有效!太感谢了!我花了几个小时寻找答案。 @Harkonnen 很高兴我能提供帮助。在阅读 pytorch 文档时,您应该注意“就地”操作:有些方法是就地的,有些不是,有些方法具有“就地”变体...... 我有这个错误,因为我没有设置我的GPU设备,为:device = torch.device('cuda')【参考方案2】:
import torch
import numpy as np

x = torch.tensor(np.array(1), device='cuda:0')

print(x.device)  # Prints `cpu`

x = torch.tensor(1, device='cuda:0')

print(x.device)  # Prints `cuda:0`

现在张量驻留在 GPU 上

【讨论】:

你想从答案中说什么不清楚。请您解释为什么使用 numpy 没有将张量推送到 cuda

以上是关于为啥我的unity5.4一个对象不能同时运行多个脚本了,inspector里面三个脚本都打了对号,但只运行一个的主要内容,如果未能解决你的问题,请参考以下文章

为啥框架集中两个子页面不能同时运行settimeout或者setInterval函数

ArcEngine 添加多个要素为啥不能同时显示

为啥在 gunicorn 上运行的烧瓶应用程序中使用日志轮换时同时在多个文件上写入日志?

为啥我的电脑只能运行一个程序

为啥使用jQuery时不能通过window对象访问对象?

super this 为啥不能同时存在