学习笔记

声明

本文内容为本人学习过程中对学习内容的一个汇总,如有不当内容,请联系本人删除!

Linux使用

screen使用

screen -S name          #创建一个会话
screen -ls              #查看当前存在的会话
screen -r name          #恢复一个会话
screen  -X -S PID quit #退出一个后台的会话

-A  将所有的视窗都调整为目前终端机的大小。
-d<作业名称>  将指定的screen作业离线。
-h<行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r<作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S<作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或–list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

进程关闭

ps -S #查找睡眠的进程
kill -9 pid #结束pid号的进程

PS -
R:running,运行或可运行状态(在运行队列中)。正在运行或准备运行的进程。

S:interruptable sleeping,可中断睡眠(等待事件完成)。正在睡眠的进程。

D:uninterruptable sleeping,不可中断的睡眠进程(通常为IO)。

T:stopped,停止或被追踪的进程。由作业控制信号停止。

Z:zombie,失败终止的(“僵死”)进程。

s:session leader,会话层状态。代表的父进程

N:低优先级进程

<:高优先级进程

+:前台进程。在前台进程组中

l:多线程进程。

GPU与CPU查看状态命令

nvidia-smi #监控GPU,
watch -n 1 nvidia-smi #实时监控GPU,
watch -n 1 lscpu #实时监控CPU,
ps -elf #进程查看,
ps -elf | grep python #查看Python子进程,
kill -9 [PID] #杀死进程PID。

Python使用

time 获取

time.localtime()

time 格式化输出

time.strftime("%Y-%m-%d %H:%M:%S",time.localtime)

实验结果导出到文本中

with open("文件位置" , "a+" , encoding="utf-8") as file:
	    file.write(str(list)+"\n")
#文件位置为单独的文件名称时则生成在当前的工作目录下
#a+ 处为文件的处理方式 。
#a+ 表示对文本进行追加写入,操作指针在文件的末尾。
#list 为实验结果存放的列表

实验结果从文本恢复到列表

def filetolist( input_filename ):
    lists = []
    with open(input_filename , "r", encoding="utf-8") as files:
        for data in files.readlines():
            data = data.replace("[", "") #去掉字符串中的[
            data = data.replace("]", "") #去掉字符串中的]
            data = data.replace("\n", "") #去掉字符串中的换行
            data = data.split(",", -1)    #剩下的字符串用,分割成列表
            tlist = []
            for tmp_float in data:
                tlist.append(float(tmp_float)) #将列表中的字符串转换为浮点型数据
            lists.append(tlist)  #将多行数据缓存到一个二维列表中
    return lists

def filetolistfloat( input_filename ):
    bers = []
    cnt = 0
    with open(input_filename, "r", encoding="utf-8") as fbers:
        for data in fbers.readlines():
            data = data.replace("[", "")
            data = data.replace("]", "")
            data = data.replace("\n", "")
            data = data.split(",", -1)
            ber = []
            for tmp_float in data:
                ber.append(float(tmp_float))
            bers.append(ber)
            cnt +=1
    if cnt <= 1:
        return ber
    else:
        return bers

def filetoliststr( input_filename ):
    bers = []
    cnt = 0
    with open(input_filename, "r", encoding="utf-8") as fbers:
        for data in fbers.readlines():
            data = data.replace("[", "")
            data = data.replace("]", "")
            data = data.replace(" ", "")
            data = data.replace("\'", "")
            data = data.replace("\n", "")
            data = data.split(",", -1)
            bers.append(data)
            cnt += 1
    if cnt <= 1:
        return data
    else:
        return bers
        

os中常用的操作

os.chdir("path") #更改当前工作目录
os.mkdir("foldername") #在当前工作路径下创建文件夹 

os获取本目录下文件夹名称

def findfolder(srcpath):
    srcdirs = os.listdir(srcpath) #获取srcpath下所以文件夹和文件名称,以列表类型返回
    dirs = []
    for dir in srcdirs:
        if not os.path.isfile(os.path.join(srcpath, dir)): #判断dir属性,为文件或者文件夹
            dirs.append(dir)
    return dirs

os获取本目录下所有的文件名称

def findfile(srcpath):   #同上
    srcdirs = os.listdir(srcpath)
    dirs = []
    for dir in srcdirs:
        if os.path.isfile(os.path.joinfile(srcpath, dir)):
            dirs.append(dir)
    return dirs

从文件夹中找出包含关键字的文件名称并存储剩余部分字符到列表中

def findnamefromfile(srcpath,strs):
    files = findfile(srcpath)
    filenames = []
    for file in files:
        if (strs in file):
            filenames.append(file.replace(strs, ''))
    return filenames

移动包含关键词的文件到目的文件夹

import shutil
def filemv(srcpath,drcpath,strs):
    files = findfile(srcpath)
    for file in files:
        if (strs in file):
            shutil.move(srcpath + file, drcpath + file)

寻找包含关键词的文件

def FindFileInStr(srcpath,strs):
    files = findfile(srcpath)
    for file in files:
        if (strs in file):
            return file         #返回找到的第一个包含关键词的完整文件名称

Matplotlib使用

matplotlib使用中文标题

import matplotlib
from matplotlib import font_manager
zhcnfont = matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
#fname 可以设置为字体的绝对路径

plt.title('误码率', fontproperties=zhcnfont)

产生画图线的类型

def generate_fatmat( len ):
    linestyles=[
    '-' , #solid line style
    '--', #dashed line style
    '-.', #dash-dot line style
    ':' , #dotted line style
    ]

    markers=[
    '.', # point marker
    ',', # pixel marker
    'o', # circle marker
    'v', # triangle_down marker
    '^', # triangle_up marker
    '<', # triangle_left marker
    '>', # triangle_right marker
    '1', # tri_down marker
    '2', # tri_up marker
    '3', # tri_left marker
    '4', # tri_right marker
    's', # square marker
    'p', # pentagon marker
    '*', # star marker
    'h', # hexagon1 marker
    'H', # hexagon2 marker
    '+', # plus marker
    'x', # x marker
    'D', # diamond marker
    'd', # thin_diamond marker
    '|', # vline marker
    '_', # hline marker
    ]

    colors=[
    'b', #蓝色
    'g', #绿色
    'r', #红色
    'c', #青色
    'm', #品红色
    'y', #黄色
    'k', #黑色
    'w', #白色
    ]

    fatmats = []
    cnt = 0
    for linestyle in linestyles:
        for marker in markers:
            for color in colors:
                fatmats.append(linestyle+marker+color)
                cnt += 1
                if cnt >= len : return fatmats

画图

def draw(input_filename,BERs,provided_decoder_fatmat,provided_decoder_type):
    SNRs = []

    plt.figure(figsize=(8, 8), dpi=240)

    plt.title(input_filename + '不同信噪比下误码率', fontproperties=matplotlib.font_manager.FontProperties( \
        fname="../../SimHei.ttf"))
    plt.xlabel('SNRs')
    plt.ylabel('BERs')


    plt.grid(True, axis="y", which="both", linestyle='-.')
    plt.grid(True, axis="x", linestyle='-.')

    plt.ion()
    #    cnt = 0
    for cnt in range(len(BERs)):
        for i in range(1, len(BERs[cnt]) + 1):
            SNRs.append(i)
        print(SNRs)
        plt.semilogy(SNRs, BERs[cnt], provided_decoder_fatmat[cnt], label=provided_decoder_type[cnt])
        plt.legend(loc='upper right')
        SNRs.clear()
    plt.savefig(input_filename + ".png")
    plt.ioff()
    plt.close()

深度学习GPU环境搭建

非root用户安装cuda和cudnn

1、cuda下载 https://developer.nvidia.com/cuda-downloads.
2、在选择linux及对应的系统之后,选择 runfile(local)这个选项,然后下面给出的命令 “sudo sh cuda_9.0.176_384.81_linux.run” 中sudo这个需要管理员账号,其实可以去掉sudo,直接运行,然后按照给出的提示同意协议
3、linux没有图形界面时,可以在浏览器复制下载链接“link”,然后再linux命令 “wget link”,下载下来filename.run
4、chmod +x filename.run 然后 ./filename.run
5、在协议中选择同意EULA(accept),不安装driver installation (no),然后再安装cuda时选择个人用户的目录,如/home/yourname/cuda9,以及cudasamples的目录
6、cudnn的安装,从官网下载https://developer.nvidia.com/cudnn(需要注册账号), 我下载的是cudnn-9.0-linux-x64-v7.tgz,然后用tar -xzvf cudnn-9.0-linux-x64-v7.tgz 解压,解压到了cuda文件夹。(cd cuda && make)可选命令
7、拷贝过去cudnn->cuda (cuda9是个人用户的下的目录/home/yourname/cuda9)
cp cuda/include/cudnn.h cuda9/include/
cp cuda /lib64/libcudnn* cuda9/lib64
chmod a+r cuda9/include/cudnn/h cuda9/lib64/libcudnn*
8、修改个人用户的环境变量
环境变量文件 /.bashrc位于home/yourname//.bashrc(用vi ~/.bashrc编辑)
“export PATH= H O M E / c u d a 9 / b i n : HOME/cuda9/bin: HOME/cuda9/bin:PATH”
“export LD_LIBRARY_PATH= L D L I B R A R Y P A T H : LD_LIBRARY_PATH: LDLIBRARYPATH:HOME/cuda9/lib64/”
这两条命令添加进去HOME目录就是/home/yourname
修改之后 source ~/.bashrc使环境变量生效
————————————————
版权声明:本文为CSDN博主「love_green」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_20280061/article/details/80421532

CUDA 10.2无root安装 详细步骤配图

https://blog.csdn.net/HPQ_8023/article/details/107671623

CUDA多版本切换

步骤一:
添加环境变量
在~/.bashrc中添加相关路径为 /usr/local/cuda

sudo nano ~/.bashrc #无root 或 sudo 可以不用sudo 
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda #无root安装 /usr/local更改为用户安装cuda目录 
export PATH=$PATH:/usr/local/cuda/bin #同上
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 #同上
source ~/.bashrc

步骤二:
建立软链接

rm -rf /usr/local/cuda #若软连接存在可以先删除
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda #无root安装 /usr/local更改为用户安装cuda目录 无需执行sudo 切换版本修改cuda-xx.x
nvcc --version

tensorflow 硬件配置

tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定

tensorflow训练使用GPU和CPU的不同指定方法

python 串口控制

串口库下载

pip install pyserial

串口使用实例

初始化参数:
name:设备名字
port:读或者写端口
baudrate:波特率
bytesize:字节大小
parity:校验位
stopbits:停止位
timeout:读超时设置
writeTimeout:写超时
xonxoff:软件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符间隔超时

方法:
isOpen():查看端口是否被打开。
open() :打开端口‘。
close():关闭端口。
read():从端口读字节数据。默认1个字节。
read_all():从端口接收全部数据。
write(“hello”):向端口写数据。
readline():读一行数据。
readlines():读多行数据。
in_waiting():返回接收缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写操作,并丢弃发送缓存中的数据。

import serial  # 导入模块
import binascii

data = '02 01 20 80 04 13'
def write_data(data):  #串口写入16进制数据,data为16进制字符串,格式参考data
    result = 0
    with  serial.Serial('COM39', 115200, parity='N', timeout=None) as ser:
        result = ser.write(bytes.fromhex(data))
    return result

def read_data_cmd(data): #串口写入十六进制数据命令,返回相应十六进制字符串值
    with  serial.Serial('COM39', 115200, parity='N', timeout=None) as ser:
        ser.write(bytes.fromhex(data))
        data = str(binascii.b2a_hex(ser.read(4)))[2:-1] #返回4字节数据,默认32bit,可根据发送命令进行更改
        return data
#返回十六进制字符串值参考 'a2345678'
def HexStrtoDec(data): #十六进制字符串值转十进制int型
	return int(data,16)

def DectoHexStr(data): #十进制int型转十六进制字符串值,最大长度2字节
    sdata = str(hex(data))
    print(sdata)
    print(len(sdata))
    if len(sdata) == 6:
        return sdata[2] + sdata[3] + ' ' + sdata[4] + sdata[5]
    elif len(sdata) == 5:
        return '0' + sdata[2] + ' ' + sdata[3] + sdata[4]
    elif len(sdata) == 4:
        return '00 ' + sdata[2] + sdata[3]
    elif len(sdata) == 3:
        return '00 0' + sdata[2]

def DectoHexStr(data, size): #改进,十进制int型转十六进制字符串值,size为字节数
    sdata = str(hex(data))
    lsdata = list(sdata)
    result = []
    for tmp in range(size*2 - len(lsdata) + 2):
        result.append('0')
    result.extend(lsdata[2:])
    index = 2
    for a in range(1, size):
        result.insert(index, ' ')
        index += 3
    return (','.join(result)).replace(',', '')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值