深度学习--函数的用法

1、os.environ(): 获取系统的相关信息

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='1' # 默认,显示所有信息
os.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 只显示warning 和error
os.environ['TF_CPP_MIN_LOG_LEVEL']='3' # 只显示error
注意:紧跟在import之后

2、全局取消证书验证
 
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
 

如果网站的SSL证书是经过CA认证的,则能够正常访问,如果SSL证书验证不通过,或者操作系统不信任服务器的安全证书,则需要添加忽略ssl证书验证。

3、tensorflow版本验证

assert tf.version.startswith('2.')是一个Python中的断言语句,用于检查当前运行的TensorFlow版本是否以"2."开头

4、Image.new(mode, size, color=0)

PIL包中图像的mode参数见PIL包中图像的mode参数 - zhangk1988 - 博客园 (cnblogs.com)

 5、Img.fromarray()

Img.fromarray(obj (numpy.ndarray), mode (str))是实现array到image的转换

obj (numpy.ndarray): 一个二维numpy数组, 表示要转换为图像的数组。
mode (str): 一个字符串, 表示输出图像的模式。常用的模式有 “L” (灰度图), “RGB” (彩色图), “CMYK” (Cyan, Magenta, Yellow, blacK)。


6、open()

对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函数打开后,返回的图像对象的模式都是“RGB”。

而对于灰度图像,不管其图像格式是PNG,还是BMP,或者JPG,打开后,其模式为“L”。

 7、astype函数:数据类型转化函数

x_train = x_train.astype("float32") / 255.0

8、tf.data.Dataset.from_tensor_slices


该函数是dataset核心函数之一,它的作用是把给定的元组、列表和张量等数据进行特征切片。切片的范围是从最外层维度开始的。如果有多个特征进行组合,那么一次切片是把每个组合的最外维度的数据切开,分成一组一组的。

假设我们现在有两组数据,分别是特征和标签,为了简化说明问题,我们假设每两个特征对应一个标签。之后把特征和标签组合成一个tuple,那么我们的想法是让每个标签都恰好对应2个特征,而且像直接切片,比如:[f11, f12] [t1]。f11表示第一个数据的第一个特征,f12表示第1个数据的第二个特征,t1表示第一个数据标签。那么tf.data.Dataset.from_tensor_slices就是做了这件事情

9、tf.train.batch() 按顺序读取队列中的数据

tf.train.shuffle_batch() 将队列中数据打乱后再读取出来.

10、文件读取函数ata_root.glob(‘*/*‘)

文件读取中 */* 即data_root.glob(‘*/*‘)

11、os.path.exists()

os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作。 

os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。 

如果存在,返回TRUE,不存在,返回的则是FALSE 

 12、shutil.rmtree()

用于删除shutil.rmtree(路径,ignore_errors=False,οnerrοr=None) 参数: 路径:表示文件路径的类路径对象。类似路径的对象是表示路径的字符串或字节对象整个目录树,路径必须指向一个目录(但不是指向一个目录的符号链接)。

13、os.listdir()

用于返回指定文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序,不包括‘.’和‘…’即使其在文件夹中。

注意,返回的是目标文件夹中包含的文件或文件夹的名字,通常用于提取文件夹中文件,用一个循环遍历所有文件。

 14、os.path.join()函数

#os.path.join()函数用于路径拼接文件路径,可以传入多个路径
#如果不存在以‘’/’开始的参数,则函数会自动加上

>>> import os
>>> print(os.path.join('path','abc','yyy'))
path\abc\yyy
#存在以‘’/’’开始的参数,从最后一个以”/”开头的参数开始拼接,之前的参数全部丢弃。

>>> print('1',os.path.join('aaa','/bbb','ccc.txt'))
1 /bbb\ccc.txt
 
>>> print('1',os.path.join('/aaa','/bbb','ccc.txt'))
1 /bbb\ccc.txt
 
>>> print('1',os.path.join('/aaa','/bbb','/ccc.txt'))
1 /ccc.txt
 
>>> print('1',os.path.join('/aaa','bbb','ccc.txt'))
1 /aaa\bbb\ccc.txt
 
>>> print('1',os.path.join('/aaa','bbb','/ccc.txt'))
1 /ccc.txt
#同时存在以‘’./’与‘’/’’开始的参数,以‘’/’为主,从最后一个以”/”开头的参数开始拼接,之前的参数全部丢弃。

>>> print('2',os.path.join('/aaa','./bbb','ccc.txt'))
2 /aaa\./bbb\ccc.txt
 
>>> print('2',os.path.join('aaa','./bbb','/ccc.txt'))
2 /ccc.txt
#只存在以‘’./’开始的参数,会从”./”开头的参数的上一个参数开始拼接。

>>> print('2',os.path.join('aaa','./bbb','ccc.txt'))
2 aaa\./bbb\ccc.txt
#注意:
 path='C:/yyy/yyy_data/'
>>> print(os.path.join(path,'/abc'))
C:/abc
>>> print(os.path.join(path,'abc'))
C:/yyy/yyy_data/abc

15、Random中Sample()函数的用法

sample(list,k)返回一个列表,列表长度为k,列表的值在原list中任选k个

import random

list = [1, 2, 3]
print(random.sample(list ,2))

list = ["china","python","sky"]
print(random.sample(list ,2))

list = range(1, 10000)
print(random.sample(list ,5))

输出:
[1, 2]
['python', 'sky']
[6912, 1869, 5991, 721, 3388]

16、with as语句用法

with…as,就是个python控制流语句,像 if ,while一样。
with…as语句是简化版的try except finally语句。

实际上,try…except语句和try…finally语句是两种语句,用于不同的场景。但是当二者结合在一起时,可以“实现稳定性和灵活性更好的设计”。

1. try…except语句

 用于处理程序执行过程中的异常情况,比如语法错误、从未定义变量上取值等等。例如:

try:
    a = 1 / 2 #a normal number/variable
    print(a)
    print(m)  # 此处抛出python标准异常
    b = 1 / 0 # an abnormal number/variable
    print(b)
    c = 2 / 1 # a normal number/variable
    print(c)
except NameError:
    print("Ops!!")
except:
    print("Error")

输出:

0.5
Ops!!
Error

先执行try后面这一堆语句,由上至下:
step1: a 正常,打印a. 于是打印出0.5 (python3.x以后都输出浮点数)
step2: b, 不正常了,0 不能做除数,所以这是一个错误。直接跳到except报错去。于是打印了Error。
step3: 其实没有step3,因为程序结束了。c是在错误发生之后的b语句后才出现,根本轮不到执行它。也就看不到打印出的c了。


2. try…finallly语句

用于无论执行过程中有没有异常,都要执行清场工作。

他两合在一起的用法:

try:
    a = 1 / 2
    print(a)
    print(m) # 抛出NameError异常,执行第一个错误,并输出Ops!!
    b = 1 / 0
    print(b)  #识别到第二个错误,仍然执行此行,但不报任何信息  
    c = 2 / 1
    print(c)  #识别到第三个错误,仍然执行此行,但不报任何信息
except NameError:
    print("Ops!!")  # 捕获到异常
except ZeroDivisionError:
    print("Wrong math!!")
except:
    print("Error")   ##识别到其他所有错误,仍然执行,但不报任何信息
else:
    print("No error! yeah!")#如果没有任何错误将输出No error Yeah,但实际上有错误被忽略了,所以不输出
finally:      # 是否异常都执行该代码块
    print("Successfully!")

输出:

0.5
Ops!!
Successfully!

3. with…as语句

语句结构如下:

with expression [as variable]:  
    with-block  

17、tqdm模块中的tqdm函数

tqdm.tqdm

返回一个迭代器iterable

#demo code
from tqdm import tqdm
import time

iterator = tqdm(iterable=range(10),
				desc=None,
				total=None,
				leave=True,
				ncols=None,
				mininterval=0.1,
				maxinterval=10.0,
				unit='it',
				bar_format=None,
				position=None,
				postfix=None)
for i in iterator:
    time.sleep(0.3)

iterable:tdqm数据参数支持的数据类型是可迭代的对象iterable,在Python中默认的可迭代对象有:list、str、tuple、dict、file、range等

desc:str类型,作为进度条说明,在进度条左边

total:预取的迭代次数

leave=True:循环结束后是否保留进度提示信息,默认保留

ncols:进度条长度,150比较适合

mininterval=0.1:进度条最小的更新间隔(秒)

maxinterval=10.0:进度条最大的更新间隔(秒)

unit=‘it’:单位,默认it每秒迭代数

postfix:在进度条右边添加字典类型描述信息

position:指定偏移,这个功能在多个进度条中有用

bar_format:自定义进度条
 

bar_format='{l_bar}{bar}{r_bar}'

l_bar: {desc}: {percentage:3.0f}%|
bar: 进度条
r_bar: |{n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}{postfix}]

100%|█████████████████| 3/3 [00:03<00:00, 1.00s/it]
  • percentage:百分比
  • n_fmt:当前数
  • total_fmt:总数
  • elapsed:消耗的时间
  • remaining:剩余时间
  • rate_fmt:速率
  • postifx:后缀字典描述
  • desc、postfix默认为空;

18、tf.image.resize_with_pad使用方法

作用
     ~~~~    调整图像大小并将图像填充到目标宽度和高度。
     ~~~~    通过保持纵横比不变而不失真,将图像大小调整为目标宽度和高度。 如果目标尺寸与图像尺寸不匹配,则会调整图像大小,然后用零填充以匹配请求的尺寸。

tf.image.resize_with_pad(
    image,                              # 形状 [batch, height, width, channels] 的 4-D 张量或形状 [height, width, channels] 的 3-D 张量。
    target_height,                      # 目标高度
    target_width,                       # 目标宽度
    method=ResizeMethod.BILINEAR,       # 用于调整图像大小的方法。 见 image.resize()
    antialias=False                     # 调整大小时是否使用抗锯齿。 参见“image.resize()”。
)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习-语音识别是一种利用神经网络模型进行语音识别的技术。Python语言在深度学习领域有广泛应用,并提供了多个相关框架,如TensorFlow和PyTorch,便于实现语音识别任务。 在进行深度学习-语音识别实战时,首先需要准备语音数据集。可以使用已有的公开数据集,也可以自己收集。常用的数据集包括LibriSpeech、TIMIT和Aurora4等。 接下来,需要将语音数据集进行预处理。预处理步骤包括数据清洗、标签处理和特征提取。数据清洗可以剔除噪音和异常数据,标签处理主要是将语音数据与对应的文字标签进行对齐,特征提取则是将语音信号转换为机器学习算法可以处理的数值特征,常用的特征提取方法有Mel频谱特征和MFCC等。 然后,需要选择合适的神经网络模型进行语音识别。常用的模型包括基于卷积神经网络(CNN)和循环神经网络(RNN)的混合模型。模型的选择要根据数据集的规模和任务需求进行。 在实际实现中,可以利用Python深度学习框架(如TensorFlow和PyTorch)来构建和训练神经网络模型。框架提供了高级的API和函数,可以方便地定义模型结构、进行参数优化和模型评估。 训练完成后,可以使用训练好的模型进行语音识别。使用Python进行语音识别时,可以使用语音信号进行预测,并得到相应的文本结果。 总之,深度学习-语音识别实战是一个复杂的任务,但借助Python的强大生态系统和深度学习框架,可以更高效地进行模型训练和识别任务的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值