GAN网络训练技巧
当判别网络能力过强,传递给生成网络的“提示”信息太少,导致训练网络梯度消失,无法学习;
当判别网络能力太差,颠倒是否,训练网络无法稳定学习,还会扬长避短,“钻空”判别网络弱点,丢失生成样本的多样性(模型崩溃);
判别器因监督学习而提升,生成器因判别器而提升,同时两者都不能把对方放倒,一旦完全放倒对方,自己就独孤求败了,无法再次提升技能。
从原理上来说,生成器和判别器从一开始都是非常弱的,因此一般不会在训练一开始两者损失就非常剧烈的波动。在训练一段时间达到稳定期后,生成器和判别器的损失都应该在一个小区间内波动,而不会有明显的持续上升/下降趋势。 如果生成器损失持续明显上升,表明其无法学习怎么欺骗判别器,体现在结果上就是开始生成噪声。 如果判别器损失持续明显上升,表示其无法学习怎么识别生成器,体现在结果上就是生成器可能会生成一致的,无意义的但是能欺骗判别器的图像(比如直接输出训练集中的样本)。 因此正确的训练曲线一般是生成器和判别器一开始不怎么波动,然后损失下降,最后稳定。
提高训练稳定性和成功率的trick:
生成器预训练;
软标签和带噪声的 ...
Pytorch的Variable
pytorch两个基本对象:Tensor(张量)和Variable(变量)
其中,tensor不能反向传播,variable可以反向传播。
tensor的算术运算和选取操作与numpy一样,与numpy相似的运算操作都可以迁移过来。
Variable variable是一种可以不断变化的变量,符合反向传播,参数更新的属性。pytorch的variable是一个存放会变化值的地理位置,里面的值会不停变化,像装糖果(糖果就是数据,即tensor)的盒子,糖果的数量不断变化。
在PyTorch中计算图的特点总结如下:autograd根据用户对Variable的操作来构建其计算图。
variable默认是不需要被求导的,即requires_grad属性默认为False,如果某一个节点的requires_grad为True,那么所有依赖它的节点requires_grad都为True。
variable的volatile属性默认为False,如果某一个variable的volatile属性被设为True,那么所有依赖它的节点volatile属性都为True。vola ...
音视频编解码常用知识
视频播放器原理 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如下:
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
解码的作用,就是将视频/ ...
tmux
Tmux 是 Terminal Multiplexer 的简称,它是一款优秀的终端复用软件,类似 GNU screen,但比screen更出色。tmux来自于OpenBSD,采用BSD授权。
Tmux 可用于在一个终端窗口中运行多个终端会话。不仅如此,还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话,这个功能非常实用。
Tmux安装sudo apt-get install tmux # ubuntuyum install -y tmux # centostmux -V # 查看版本
基本配置,打开配置文件 ~/.tmux.conf,添加配置:
set -g mouse on # 用鼠标自由调整窗格大小,还可以通过右键实现一些基本操作。set -g default-terminal "screen-256color" 设置默认终端模式为256co1or。set -g history-limit 20000 # 设置回滚缓冲区大小为20000行
Tmux的使用 安装完成后输入命令tmux即可打开软件 ...
nvidia-smi无法与驱动通信
今天在重启服务器ubuntu后,发现cuda无法使用,输入nvidia-smi后提示无法与驱动通信,通过搜索网上的解决方案,其中一个能够解决问题方案的是:https://blog.csdn.net/wjinjie/article/details/108997692
但该方案无法解决博主问题,在最后两步,即
sudo apt-get install dkmssudo dkms install -m nvidia -v 450.57
时,提示无法返回满足内核版本的状态,因此推断是内核版本和驱动不匹配导致,这可能是重启计算机时完成了内核更新,或者其他用户选择更新了内核版本,因此卸载当前驱动,重新安装新版本驱动。
首先在/usr/src/目录下可以看到已安装的nvidia驱动文件和版本
sudo apt-get remove nvidia-* # 卸载当前驱动
卸载完成后,文件消失
sudo apt updatesudo apt upgrade # 更新系统源apt search nvidia-driver # 查看可用驱动程序列表sudo apt in ...
Python的赋值和.copy区别
区别说明
使用“=”直接赋值,是引用赋值,更改一个,另一个同样会变。
copy()复制一个副本,原值和新复制的变量互不影响。
a = ['龙虎英雄会', '十二金钱镖', '乱世枭雄', '老店风云', '三侠五义']b = a # 直接赋值c = a.copy() # 复制列表中的所有元素print('a:', a)print('b:', b)print('c:', c, '\n')del a[1] # 删除列表中的第2个元素print('a:', a)print('b:', b)print('c:', c, '\n')b.remove('老店风云') # 移除指定元素print('a:', a)print('b:', b)print(' ...
无人机组网通信技术
无人机组网通信技术是指利用无人机之间或无人机与地面设备之间的通信能力,建立起一种自组织的通信网络。通过这种技术,无人机可以相互协作、共享信息,实现更高效的任务执行和数据传输。这种通信技术可以用于各种领域,包括应急响应、军事作战、智能交通管理、农业监测和物流配送等,为这些领域提供了更多的智能化、协同化解决方案。
无人机组网通信技术主要包括以下几种:
自组网模块技术:这种技术具有灵活性、动态性和抗干扰性,能够根据无人机的位置和运动状态动态调整网络结构,确保通信的连续性和稳定性。
MESH宽带自组网通信技术:这是无人机空中组网及无线通信应用的一个重要方向,可以临时、动态、快速构建分布式无中心的自治性专用网络,具有自组织、自恢复的特点。
飞行自组网(FANET) :基于自组织网络技术,为无人机群提供可靠并且实时的网络通信,成为解决多无人机间通信问题的一种良好解决方案。
UAVCAN通信协议:这是一种基于机载网络通信协议的无人机通信系统,旨在提供高效可靠、安全和灵活的机载通信方案,支持各种无人机传感器和控制器的集成。
MAVLink通信协议:一种开源的轻量级消息传输协议,广泛应用于 ...
ETC识别
ETC(Electronic Toll Collection)是一种电子收费系统,它可以自动识别车辆并完成收费,无需停车等待,提高了交通效率。那么,ETC是如何被识别的呢?本文将以ETC的识别为中心,从技术原理、应用场景、优缺点等方面进行探讨。
技术原理 ETC的识别技术主要基于射频识别(RFID)技术,即利用无线电波进行通信的技术。具体来说,ETC系统将一个小型的电子标签(ETC卡)安装在车辆的挡风玻璃上,当车辆经过ETC收费站时,收费站的天线会发出无线电波,ETC卡接收到信号后,会返回一个包含车辆信息的信号给收费站,收费站通过与车辆信息数据库的比对,完成收费并开启道闸,车辆可以无需停车直接通过。
ETC卡中的芯片是实现识别的关键部件,它包含了车辆的信息、账户余额等。ETC卡的读写器是将车辆信息写入芯片并读取芯片信息的设备,它可以通过USB接口与电脑连接,进行信息管理。
应用场景 ETC的应用场景主要是高速公路、城市快速路等收费站,它可以大大提高交通效率,减少拥堵。同时,ETC还可以应用于停车场、加油站等场所,实现无人值守的自动收费。
在高速公路收费站,ET ...
screen
GNU Screen一款由GNU计划开发的用于命令行终端切换的软件,可以当做窗口管理器的命令行界面版本。只要Screen本身没有被终止,在其内部运行的会话都可以恢复,特别适合执行一些运行时间长的任务。
执行如下命令,创建screen窗口。
screen -S [$Name]
执行如下命令,列出screen窗口。
screen -ls
当需要运行脚本、执行程序时,在命令前添加screen即可。
同时按Ctrl+a+d键,就可以退出SSH登录,但不会影响screen程序的运行。
需要继续工作时,登录实例,然后执行如下命令,恢复会话即可。
screen -r -d id号
Python复制移动删除文件和文件夹
对于文件和文件夹,我们最常做的操作分为三种:复制、移动、删除。
这三种操作可以通过shutil和os模块中的函数实现,下面通过对hello.txt的操作为例进行说明:
shutil.copy(source, destination) #复制文件shutil.copytree(source, destination) #复制文件夹shutil.move(source, destination) # 移动文件os.unlink() #删除文件os.rmdir() #删除文件夹,文件夹必须为空shutil.rmtree() #删除文件夹,包含文件夹及文件夹下的所有文件
复制复制文件#复制hello.txt到"C:\myweb\chapter02"目录下>>> shutil.copy('hello.txt', r'C:\myweb\chapter02') 'C:\\myweb\\chapter02\\hello.txt' #复制hel ...