我对神经网络中“主干”的含义感到困惑,尤其是在DeepLabv3+ 论文中。我做了一些研究,发现骨干可能意味着
网络的特征提取部分
DeepLabv3+ 以Xception和 ResNet-101 作为其主干。但是,我对DeepLabv3+的整个结构并不熟悉,主干指的是哪部分,哪些部分保持不变?
主干的一般描述或定义也将受到赞赏。
在vscode的替换模式下:
“转到下一场比赛”和“替换”的热键都是enter。
我想选择性地替换一些单词。例如,在图像的下半部分:我想重命名hidden_dim' but not hidden_dim_in`。
按下该键enter将重复执行“转到下一场比赛”或“替换”。如何为这两个功能设置不同的热键?
给定一个包含 N 个点的张量,用 [x,y] 表示,我想在每个点周围创建一个 2D 高斯分布,将它们绘制在一个空的特征图上。
例如,左图显示了一个给定点(在特征图上注册为像素,其值设置为 1)。右图在其周围添加了 2D 高斯分布。
我如何为每个点添加这样的分布?pytorch中有相关的API吗?
我的问题来自一个流行的编码测试。
给定一个定义如下的链:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
Run Code Online (Sandbox Code Playgroud)
如果我们想恢复链条,例如:
输入:1->2->3->4->5->NULL
输出:5->4->3->2->1->NULL
它可以解决像这样:
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
cur, pre = head, None
while cur:
tmp = cur.next
cur.next = pre
pre = cur
cur = tmp
return pre
Run Code Online (Sandbox Code Playgroud)
但是有一种更紧凑的方式,我无法真正遵循:
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
cur, pre = head, None
while cur:
cur.next, pre, cur = pre, cur, cur.next
return pre
Run Code Online (Sandbox Code Playgroud)
因为如果我将并行分配行更改为
pre, cur, …Run Code Online (Sandbox Code Playgroud) 此功能具有3种模式,即“ hh”,“ ih”和“ ho”。
def mutate_add_connection(self, mode = 'hh'):
if mode == 'hh': # hidden --> hidden
node_a = random.choice(self.hidden_nodes_dict.values())
node_b = random.choice(self.hidden_nodes_dict.values())
self.connect_node_pair(node_a,node_b, 'sort')
elif mode == 'ih': # input --> hidden
node_a = random.choice(self.input_nodes_dict.values())
node_b = random.choice(self.hidden_nodes_dict.values())
node_b.set_links((node_a,random.choice([-1, 1])))
elif mode == 'ho': # hidden --> output
node_b.set_links((node_a,random.choice([-1, 1])))
node_a = random.choice(self.hidden_nodes_dict.values())
node_b = random.choice(self.output_nodes_dict.values())
Run Code Online (Sandbox Code Playgroud)
在添加连接变异的实践中,我需要使用这三种模式。每种模式不要说33.33%。
因此,我计划在此功能中添加模式“自动”。为了将以上三种模式称为“随机”。
def mutate_add_connection(self, mode = 'hh'):
if mode == 'auto':
chosen_mode = random.choice(['hh','ih','ho'])
self.mutate_add_connection(mode=chosen_mode)
# the code above .......
Run Code Online (Sandbox Code Playgroud)
但是我不确定这是否是一个好主意。您能否提出实现我的建议的更好方法?谢谢〜
在dist_train.shmmdetection3d中,最后一行做了什么?${@:3}
我无法理解它的 bash 语法。
#!/usr/bin/env bash
CONFIG=$1
GPUS=$2
NNODES=${NNODES:-1}
NODE_RANK=${NODE_RANK:-0}
PORT=${PORT:-29500}
MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"}
PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
python -m torch.distributed.launch \
--nnodes=$NNODES \
--node_rank=$NODE_RANK \
--master_addr=$MASTER_ADDR \
--nproc_per_node=$GPUS \
--master_port=$PORT \
$(dirname "$0")/train.py \
$CONFIG \
--seed 0 \
--launcher pytorch ${@:3}
Run Code Online (Sandbox Code Playgroud) 我想设置默认的 python 解释器路径,以避免每次登录远程服务器时都被询问。
我尝试过这个类似答案中的方法。我的workspace.json 现在看起来像:
{
"folders": [
{
"uri": "vscode-remote://ssh-remote+172.1.1.1/home/user/workspace/folder1"
},
{
"uri": "vscode-remote://ssh-remote+172.1.1.1/home/wzy/workspace/folder2"
}
],
"remoteAuthority": "ssh-remote+172.1.1.1",
"settings": {
"python.defaultInterpreterPath": "/home/user/miniconda3/envs/py38/bin/python",
}
}
Run Code Online (Sandbox Code Playgroud)
但是每次重新连接到服务器时,我都需要手动选择 python 解释器(否则/user/bin/python3将选择基本解释器)
每次开始训练时,我都需要手动输入类似的命令CUDA_VISIBLE_DEVICES=0,1,6,7,具体取决于我将使用多少个 GPU 以及哪些当前是空闲的。
这个答案提供了一个丑陋但实用的解决办法。即在 bashrc 中为每个组合编写一个别名:
alias gpu4='CUDA_VISIBLE_DEVICES=4'
alias gpu25='CUDA_VISIBLE_DEVICES=2,5'
alias gpu256='CUDA_VISIBLE_DEVICES=2,5,6'
alias gpu0467='CUDA_VISIBLE_DEVICES=0,4,6,7'
Run Code Online (Sandbox Code Playgroud)
例如,这可以节省输入“CUDA_VISIBLE_DEVICES”的大量时间。
如何进一步简化使用CUDA_VISIBLE_DEVICES?
或者,有人可以分享一种更优雅的方法来替换alias上面的 -list 吗?