博文

目前显示的是 一月, 2019的博文

shadowsocks中转

shadowsocks中转 在家里直连美国的VPS速度很慢,youtube都不能流畅观看,但是用实验室的网连接美国的VPS就很快,因此可以用实验室的服务器做中继器,用来连接美国的VPS。 实验室处于内网,先前已经通过反向ssh成功访问实验室的服务器,在这里我们假设已经能够访问实验室的服务器。 网络的连接走向如下: 家=>实验室=>美国VPS 在实验室的服务器上安装haproxy,并修改配置文件/etc/haproxy/haproxy.cfg, sudo apt install haproxy sudo vim /etc/haproxy/haproxy.cfg 用vim打开,输入dG删除全部内容,并输入以下配置文本 global ulimit-n 51200 defaults log global mode tcp option dontlognull timeout connect 1000 timeout client 15000 timeout server 15000 frontend ss-in bind *:6324 default_backend ss-out backend ss-out server server1 69.12.82.153:4396 将实验室服务器的6324端口转发到美国服务器的4396端口,因此我们就可以将实验室的服务器当作中继器,从而提升连接的速度。修改完配置文件后输入如下命令启用: haproxy -f /etc/haproxy/haproxy.cfg 在家里的电脑或者手机终端的shadowsocks配置时,输入的服务器地址为实验室的服务器地址,端口为中继端口(本文中为6324),加密方式和密码为美国VPS处shadowsocks服务端的配置。至此就可通过中继访问VPS了。 配置过程中发现的一个问题是,在手机端用shadowsocks(4.5.7版本)配置,选择全局会无效,即不能访问谷歌等外网,但是用百度查ip却是美国VPS的ip,设置为绕过局域网地址就可以,设置为绕过局域网和中国大陆地址也能正常工作。 参考 https://www.liumingye.cn/archiv...

ubuntu server 16.04 添加开机启动脚本

ubuntu server 16.04 添加开机启动脚本 在测试rc.local等一系列方法,包括在/etc/init.d/rc.local里面添加PATH的环境变量等,均没有效果。找到systemd的启动方法,是从Ubuntu 15.04 之后开始启用的。 1.在/lib/systemd/system/下添加启动文件 cd /lib/systemd/system/ sudo vim sslocal.service 编辑的内容为 [Unit] Description=Shadowsocks Client Start After=network.target [Service] Type=simple User=hzs ExecStart=/home/hzs/.local/bin/sslocal -s 69.12.82.153 -p 4396 -k password -m rc4-md5 -l 8980 [Install] WantedBy=multi-user.target [Unit]下设置了文件描述,启动顺序,在network启动以后,因为shadowsocks是代理,需要网络设置好了才能设置。 [Service]下设置Type启动模式,User设置启动用户,ExecStart为启动命令 [Install]下设置了启动模式,即老版的inittab。 2.将这个文件软连接到/etc/systemd/system/multi-user.target.wants/即可。 sudo ln -s /lib/systemd/system/sslocal.service /etc/systemd/system/multi-user.target.wants/ 软链接要填写完整路径,在/etc/systemd/system/multi-user.target.wants/里面看到的文件需为蓝色,不能为红色的,要有下面的结果才是正确的。 ls -l sslocal.service lrwxrwxrwx 1 root root 35 Jan 30 15:12 sslocal.service -> /lib/systemd/system/sslocal.service 参考 https://www.linu...

ubuntu server 安装sogou输入法

ubuntu server 安装sogou输入法 ubuntu的状态栏没有fctix的状态图标,因此需要在命令行打开 fcitx-config-gtk3 添加sogou输入法即可,之前的步骤跟在桌面版安装的一样。 参考 https://www.jianshu.com/p/6fcbac5d0890

ubuntu挂载硬盘不输入密码及开机自动挂载

ubuntu挂载硬盘不输入密码及开机自动挂载 挂载无需输入密码 sudo vim /usr/share/polkit-1/actions/org.freedesktop.udisks2.policy 修改 filesystem-mount-system 下的 allow_active 为 yes 即可。 开机自动挂载 sudo blkid 查看所有磁盘的UUID,例如我的信息如下 /dev/sda1: SEC_TYPE="msdos" UUID="000A-A466" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="47260d92-da66-44cb-acb8-98eee9488c4d" /dev/sda3: LABEL="Data" UUID="EABF0039BEFFFFB5" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="6ac186e7-924a-437e-8a96-e8f5a850b3d1" /dev/sda4: UUID="CE3C453C3C452137" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="a1030adf-10df-4f99-b4ac-6bd46fecbc43" /dev/sda5: LABEL="Win7" UUID="74EE9625EE95DFA2" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="35dddbc5-e83d-42b8-b9e4-964799e6fa28" /dev/sdb1: SEC_TYPE="msdos" UUID=...

PyTorch冻结层

PyTorch冻结层 PyTorch中,固定某些层,只更新部分层的参数,找到这样的方法 for param in model.parameters(): param.requires_grad = False for param in model.classifier_parameters(): param.requires_grad = True optimizer = torch.optim.Adam(model.classifier_parameters(), lr=args.lr, weight_decay=1e-4) 先前我的操作都没有将 requires_grad 置为 False ,直接在 optimizer 里设置更新的参数,比如我只想更新分类层,就在 optimizer 中填入 model.classifier_parameters() ,与在 optimizer 中填入 model.parameters() 得出的结果时不同的。因此我也就认为直接在 optimizer 中填入要更新的参数,其余的就自动冻结了。但是今天发现,这样的操作较为耗时,因为在网络传递的时候虽然不更新权重,但网络还是会计算权重,将 requires_grad 置为 False 可以让网络不计算此部分的权重,从而加快网络的运算速度。在将不需要更新参数的梯度设为 False 之后,在 optimizer 里面填写的是整个模型的参数或是仅有需要更新部分的参数,与速度和准确率都没有关系。 最后一点待定,还有待实验证明。 经过实验证明,最后一点是正确的。

shell批量处理图像到视频

shell批量处理图像到视频 #!/bin/bash ori_path=/media/pci/4T/hzs/dataset/prid2011/prid_2011/multi_shot #文件夹路径,里面有子目录cam_a,cam_b等 folders=$(ls $ori_path) #列出子文件夹的名字 for d in $folders #分别对每个子文件夹操作 do path=$ori_path/$d #更新path,变成子文件夹的完整路径 cd $path #进入子文件夹 new_dir_name=$d"_"video #存放转换后视频的文件夹名 if [ ! -d "../$new_dir_name" ];then #判断文件夹是否存在,否则创建文件夹, mkdir ../$new_dir_name fi folders=$(ls $path) for dir in $folders do ffmpeg -f image2 -i $dir/%*.png ../${path##*/}_video/$dir.mp4 done done

ffmpeg基本操作

ffmpeg基本操作 命令会将连连续命名的图片文件合成视频, -b 参数指定码率 ffmpeg -f image2 -i image%d.jpg -vcodec mpeg4 -b 800k video.avi 若是图像的文件名不连续,可用下面的命令合成视频 ffmpeg -f image2 -i %*.png out.avi

PyTorch DataParallel 指定显卡运行出错

PyTorch DataParallel 指定显卡运行出错 当设置的显卡ID中包含第0张显卡时,程序能够正常运行,若指定从显卡1开始,比如我想要使用显卡1和显卡2并行计算,此时会出现如下错误: RuntimeError: Expected tensor for argument #1 'input' to have the same device as tensor for argument #2 'weight'; but device 1 does not equal 0 (while checking arguments for cudnn_batch_norm) 我们的数据默认存在第0张显卡,但是选用的显卡里面并不包含第0张显卡,因此就会出错。 解决方法: 加入如下语句 torch.cuda.set_device(1) 即可改变默认权重默认的存储位置,程序就能够正常运行。

gnome-terminal 启动错误

gnome-terminal 启动错误 终端下启动gnome-terminal 出现错误: Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error spawning command line 'dbus-launch --autolaunch=9fc7e31fca2ee9308708ee4b5bff7e1f --binary-syntax --close-stderr': Child process exited with code 1 但是使用如下命令则可以正常启动 dbus-launch gnome-terminal 解决方法: 在.bashrc文件中添加如下命令即可 export $(dbus-launch)