我在 Intellij Idea 中有一个 Maven 项目。对于依赖项 jar,我给出了一个包含变量的系统路径。仅当我获取某个文件(例如“~/dir1/file1”)时,此变量才可用。因此,Intellij 无法找到该 jar 并显示错误。那么,我如何在 Intellij 中获取这个文件呢?我无法手动替换该变量的路径,因为有很多这样的变量,并且变量的值可能会根据“~/dir1/file1”文件的版本而有所不同。
请不要建议在启动 Intellij 之前获取该文件,因为我不是从终端启动 Intellij,而是从 Launchpad 启动。或者在终端中进行采购,然后从终端启动 Intellij,是唯一的方法吗?
编辑 1:我在 Mac Book Pro 上运行 Intellij Community Edition
这是这个问题的后续问题。我想在 pytorch 中做同样的事情。是否有可能做到这一点?如果是,如何?
import torch
image = torch.tensor([[246, 50, 101], [116, 1, 113], [187, 110, 64]])
iy = torch.tensor([[1, 0, 2], [1, 0, 2], [2, 2, 2]])
ix = torch.tensor([[0, 2, 1], [1, 2, 0], [0, 1, 2]])
warped_image = torch.zeros(size=image.shape)
Run Code Online (Sandbox Code Playgroud)
我需要类似的东西torch.add.at(warped_image, (iy, ix), image)给输出
[[ 0. 0. 51.]
[246. 116. 0.]
[300. 211. 64.]]
Run Code Online (Sandbox Code Playgroud)
请注意,位于(0,1)和的索引(1,1)指向相同的位置(0,2)。所以,我想要warped_image[0,2] = image[0,1] + image[1,1] = 51.
我正在尝试计算来自 KITTI 原始数据集的视频中两帧之间的相对姿势。该oxts数据提供了lat, lon, alt, roll, pitch, yaw对每个帧。如何将此数据转换为转换矩阵(旋转矩阵和平移向量)?
这个答案表明这是可能的,但没有给出解决方案。Python 是首选,但如果您有其他语言的解决方案,那也很好。我可以将代码翻译成python。
样本数据:
lat, lon, alt, roll, pitch, yaw = 49.015003823272, 8.4342971002335, 116.43032836914, 0.035752, 0.00903, -2.6087069803847
PS:我正在尝试使用投影几何将一帧姿势扭曲到另一帧。为此,我需要姿势、深度和相机矩阵。KITTI raw 提供相机矩阵。我打算从立体图像计算深度。所以,我只剩下计算它们之间的姿势/变换矩阵
我知道这是最受欢迎的问题之一,但到目前为止,没有一个解决方案对我有用。
tensorflow v1.13.1我正在运行用和编写的遗留代码keras v2.2.4。我无法修改代码来运行最新的张量流版本。由于 keras 现已合并到tensorflow中,因此我在通过pip安装特定版本的tensorflow和keras时遇到问题。我发现anaconda可以选择使用上述版本安装keras和tensorflow。所以,我安装了它
conda install -c conda-forge keras-gpu=2.2.4 tensorflow-gpu=1.13.1
Run Code Online (Sandbox Code Playgroud)
它安装了该版本并且一切正常。但它不使用 GPU,而是在 CPU 上运行。我注意到 anaconda 安装了 Tensorflow 的 CPU 和 GPU 版本,我想这就是它默认为 CPU 版本的原因。所以,我的问题是,如何强制它使用 GPU 版本?
PS:有很多答案建议删除CPU版本的tensorflow。但是当我尝试删除 CPU 版本时,conda 会卸载所有内容,包括 keras。所以,我认为当两者都安装时应该有一种使用tensorflow-gpu的方法。任何在这方面的帮助表示赞赏!
我正在图像数据库上训练神经网络。我的图像具有全高清 (1920 x 1080) 分辨率,但为了训练,我使用大小为 256x256 的随机裁剪。由于读取完整图像然后裁剪效率不高,因此我使用 numpy memmap 仅加载 256x256 裁剪图像。也就是说,我正在做类似下面的事情
image_mmap = numpy.load(npy_image_path.as_posix(), mmap_mode=mmap_mode)
cropped_image = image_mmap[y1:y2, x1:x2]
Run Code Online (Sandbox Code Playgroud)
由于在每个 epoch 中都会加载相同的图像,因此最初在每个 epoch 中加载所有 memmap 是否会更好,只需调用上面的第二行来获取裁剪后的图像?
PS:我已经尝试了这两种方法,但我并没有真正发现它们之间有很大的区别。我的直觉表明在__init__函数中加载所有内存映射应该比在每个时期一次又一次加载内存映射更好,但事实并非如此。如果你能解释为什么会发生这种情况,那也会对我有帮助。
尽管两种方法对我来说效果相似,但我问这个问题的原因是,我想知道未来的最佳实践是什么。
我正在根据图像训练 CNN 模型。最初,我正在对大小的图像块进行训练(256, 256),一切都很好。然后我更改了数据加载器以加载全高清图像(1080, 1920),并在经过一些处理后裁剪图像。在这种情况下,GPU 内存会随着每个批次而不断增加。为什么会发生这种情况?
PS:在跟踪损失时,我loss.detach().item()这样做是为了使损失不会保留在图表中。
我正在尝试注释我用 python 创建的一些图形。因此,我生成一个包含指定文本的图像(使用 PIL ImageDraw)并将其与图像连接起来。现在,我想在文本中包含数学符号。创建文本图像时有没有办法在乳胶数学中写入文本?这个答案建议使用 unicode 文本来解决问题,但我更喜欢直接用乳胶编写文本。
微量元素:
from PIL import ImageFont, Image, ImageDraw
from matplotlib import pyplot
def get_annotation(image_shape: tuple, title: str, font_size: int = 50):
frame_height, frame_width = image_shape[:2]
times_font = ImageFont.truetype('times-new-roman.ttf', font_size)
text_image = Image.new('RGB', (frame_width, frame_height), (255, 255, 255))
drawer = ImageDraw.Draw(text_image)
w, h = drawer.textsize(title, font=times_font)
drawer.text(((frame_width - w) / 2, (frame_height - h) / 2), text=title, fill=(0, 0, 0), font=times_font,
align='center')
annotation = numpy.array(text_image)
return annotation
if __name__ == '__main__':
anno = …Run Code Online (Sandbox Code Playgroud) 是否可以将 numpy 数组以布尔格式保存在磁盘上,每个元素只需要 1 位?这个答案建议使用packbits和unpackbits,但是从文档来看,这似乎可能不支持内存映射。有没有办法在支持 memmap 的情况下在磁盘上存储 1 位数组?
需要 memmap 的原因:我正在全高清 ( 1920x1080) 图像的数据库上训练我的神经网络,但我会为每次迭代随机裁剪一个256x256补丁。由于读取完整图像非常耗时,因此我使用 memmap 只读取所需的补丁。现在,我想将二进制掩码与我的图像一起使用,因此有此要求。
我有一个类A定义了我所有的网络。我用 包裹这个torch.nn.DataParallel。当我将转发函数称为 时a(),它工作正常。但是,我还想调用 的一些其他函数A,同时仍然保留DataParallel功能。这可能吗?或者我只需要执行转发功能?
最小非工作示例(只是为了更好地传达上下文):
class A(torch.nn.module)
def __init__():
blah blah blah
def forward(some_arguments):
blah blah blah
def func1(some_arguments):
blah blah blah
a = A()
a = torch.nn.DataParallel(a, device_ids=[0, 1])
# calling forward function
outputs = a(inputs) # works fine.
# calling func1
outputs1 = a.func1(inputs) # does not work.
outputs1 = a.module.func1(inputs) # works without parallelizing data. I am not sure if this is the right thing to do
Run Code Online (Sandbox Code Playgroud) 我有一组嵌套的类(每个类型都是torch.nn.module)。在保存嵌套类之一的权重之前,我需要进行一些预处理。是否可以重写该state_dict()函数,以便我可以在自定义实现中插入预处理?
示例代码:
Class A(torch.nn.module):
def __init__(self):
super().__init__()
self.b1 = B1()
self.b2 = B2()
Class B1(torch.nn.module):
def __init__(self):
super().__init__()
self.var = torch.nn.Parameter(torch.Tensor((3, 5), dtype=float))
Class B2(torch.nn.module):
def __init__(self):
super().__init__()
self.var = torch.nn.Parameter(torch.Tensor((3, 5), dtype=float))
def state_dict():
# I want to override the default state_dict like this, but this does not work.
# Is there a way to achieve this?
bool_var = self.var.bool().cpu().numpy()
state_dict1 = super.state_dict()
state_dict1.update({'var': bool_var})
return state_dict1
def load_state_dict(state_dict):
state_dict['var'] = state_dict['var'].float()
super.load_state_dict(state_dict)
return
Run Code Online (Sandbox Code Playgroud)
具体来说,对于其中一个类,我想在保存变量之前将其转换为,并在加载时 …
python ×7
pytorch ×5
numpy ×3
numpy-memmap ×2
boolean ×1
dataparallel ×1
java ×1
keras ×1
kitti ×1
latex ×1
mathjax ×1
maven ×1
memory-leaks ×1
pose ×1
save ×1
tensorflow ×1