专业基础概念
1.Anaconda : Python用于深度学习的一站式开发环境,拥有Python的用于深度学习的库,方便简洁
2.Opencv:(open source computer vision library) 开源计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法
3.Tensorflow :人工智能学习系统,语音,图片识别,tensorflow是一个基于数据流编程的符号数学系统,被广泛用于各类机器学习算法的编程实现
4.Numpy: numpy系统是Python的一种开源的计算扩展,可以用来存储和处理大型矩阵,计算过程相比python自身的嵌套列表的结构要高效的多
5.Matplotlib: matplotlib是python的一个2D绘图库,它可以拷贝格式和跨平台的交互环境生成出版质量级别的图形,可以绘制直方图,功率谱,条形图,错误图,散点图等
1.tensorflow
1.常用api
import tensorflow as tf # tensorflow 模块的引入
tf.constant() # 常量的定义
tf.variable(0, name='num') # 变量的定义, 第一个参数为变量的初始值,第二个参数是变量的name
tf.Session() # 上下文的创建
sess.close() # 关闭session
print(sess.run()) # 内容的打印输出
tf.assign(data1, data2) # 将data2中的值赋值为data1, 返回值为赋值后data1的值
tf.get_default_session().run(variables) # 获取默认session打印变量的值
variables.eval() # 变量获取默认session直接打印出值
tf.placeholder() # 用于声明一个具体数据类型的变量
实例一:使用tensorflow实现“hello world” 的打印
import tensorflow as tf hello = tf.constant('hello world') # 定义字符串 sess = tf.Session() # 创建上下文 print(sess.run(hello)) # 打印
注意: 1.如果程序中定义了变量,那么就一定需要将变量初始化
实例二:初始化变量
import tensorflow as tf number = tf.Variable(0, name='num') # 定义一个变量 init = tf.global_variables_initializer() # 初始化程序中的所有变量 with tf.Session() as sess: sess.run(init)
实例三:变量重新赋值,获取默认session,打印数值
import tensorflow as tf data1 = tf.constant(3) data2 = tf.Variable(2) dataAdd = tf.add(data1, data2) dataCopy = tf.assign(data2, dataAdd) # 将dataAdd中的值赋值给data2 init = tf.global_variables_initializer() # 初始化程序中的变量 with tf.Session() as sess: sess.run(init) print(sess.run(dataCopy)) print(dataCopy.eval()) # 获取默认的session,打印出datacopy的值 print(tf.get_default_session().run(dataCopy))
实例四:placeholder的使用
import tensorflow as tf # placeholder的使用 data1 = tf.placeholder(tf.int32) data2 = tf.placeholder(tf.int32) dataAdd = data1 + data2 with tf.Session() as sess: print(sess.run(dataAdd, feed_dict={data1: 1, data2: 3}))
2.常量与变量的四则运算
tf.add(data1, data2) # 加法
tf.subtract() # 减法
tf.multiply() # 乘法
tf.divide() # 除法
3.矩阵基础
1.矩阵的定义和特殊矩阵的初始化
tf.constant([[1, 2], [3, 4]]) # 定义一个两行两列的矩阵
tf.zeros([2, 3]) # 生成指定行列的空矩阵
tf.ones ([2, 3]) # 生成指定行列的全一矩阵
tf.fill([2, 3], 1) # 生成指定行列的指定填充矩阵
tf.zeros_like(mat) # 生成一个和mat维度相同的空矩阵
tf.random_uniform([2, 3], 1, 5) # 在1到5之间随机选取填充指定维度的矩阵
2.矩阵的运算
。若矩阵之间进行加法运算,则必须保证,两个矩阵的行和列必须是一样的
。若矩阵之间进行乘法运算,则必须保证, 第一个矩阵的列和第二个矩阵的行是一样的
tf.add(data1, data2) # 两个矩阵之间进行加法运算
tf.matmul(data1, data2) # 两个矩阵之间进行矩阵乘法运算
tf.multiply(data1, data2) # 两个矩阵之间进行普通的乘法运算
2.opencv
import cv2 # opencv的引入
cv2.imread() # 实现图片的读取,返回值为图片的数据内容,第一个参数是图片的绝对路径,第二个参数(0, 1),0为灰度图片,1为彩色图片
cv2.imshow() # 实现图片的显示,第一个参数为窗体名称,第二个参数是要显示图片的数据内容
cv2.waitKey() # 实现程序的stop
cv2.write() # 图片的写入,第一个参数是图片的名称,第二个参数图片的格式(jpg,png),第三个参数可以控制图片的文件的大小(压缩),jpg有损压缩,png无损压缩
实例一:实现图片的读取和显示
import cv2 img_data = cv2.imread('imgs/image0.jpg', 1) # 获取到图片的数据内容 cv2.imshow('img', img_data) # 显示图片 cv2.waitKey() # 为了图片一直显示在桌面上,所以我们需要将这个进程暂时的stop一下
实例二:实现图片的写入,有损压缩
cv2.imwrite('1.jpg', jpg, [cv2.IMWRITE_JPEG_QUALITY, 50])
实例三:对像素的读写操作 , 注意:opencv读取出来的像素值是bgr顺序的
import cv2 img_data = cv2.imread('imgs/image0.jpg', 1) (b, g, r) = img_data[100, 100] # 读取指定像素的内容 print(b, g, r) img_data[100, 100] = (0, 0, 255) # 给指定像素写入指定的内容
3.numpy
1.常用api
np.array([[1, 2], [3, 4]]) # 使用numpy定义一个2*2的矩阵
np.zeros([2, 3]) # 定义指定维度的空矩阵
np.ones([2, 3]) # 定义指定维度的全一矩阵
np.linspace(1, 15, 15) # 可以定义一个呈线性增长的矩阵,这代码范围从1, 15, 一共有15个数据
4.matplotlib
。模块的导入方法: import matplotlib.pyplot as plt
1.绘制折线图
需要x轴数据, y轴数据, 折线图线的颜色‘r’, 折线图的线的粗细(lw= )
plt.plot(x, y, 'r', lw=2) # 绘制折线图
实例一:绘制折线图
import matplotlib.pyplot as plt import numpy as np x = np.array([1, 2, 3, 4, 5, 6]) # 定义x的值 y = np.array([3, 45, 54, 23, 5, 55]) # 定义y的值 plt.plot(x, y, 'r', lw=2) # 绘制折线图 plt.show() # 显示折线图
2.绘制柱状图
需要x轴数据,y轴数据,柱状图的粗细, 柱状图的颜色深浅(透明度, 取值范围【0, 1】), 柱状图的颜色,
plt.bar(x, y, 0.2, alpha=0.2, color=‘r’) # 绘制柱状图
实例二:绘制柱状图
import matplotlib.pyplot as plt import numpy as np x = np.array([1, 2, 3, 4, 5, 6]) # 定义x的值 y = np.array([3, 45, 54, 23, 5, 55]) # 定义y的值 plt.bar(x, y, 0.2, alpha=0.3, color='b') # 绘制柱状图 plt.show() # 展示绘制好的柱状图
实例三:实现股票数据日线的绘制
# 股票数据日线的绘制 import numpy as np import matplotlib.pyplot as plt startPrice = np.array([20.12, 12.34, 23.33, 54.09, 33.12]) # 五天中每天的开盘价格 endPrice = np.array([11.44, 41.45, 12.21, 90.32, 45.03]) # 对应开盘价格的五天收盘价格 dataNum = np.linspace(1, 5, 5) # 生成从一到五天的日期 # print(dataNum) # 开始是使用折线图的方式画出柱状图, 需要二维的x值和二维的y值 plt.figure() for i in range(5): dataMat = np.zeros([2]) dataMat[0] = dataNum[i] dataMat[1] = dataNum[i] priceMat = np.zeros([2]) priceMat[0] = startPrice[i] # 当天的开盘价格 priceMat[1] = endPrice[i] # 当天的收盘价格 if startPrice[i] > endPrice[i]: # 判断当天的开盘价格和收盘价格的大小 plt.plot(dataMat, priceMat, 'r', lw=5) else: plt.plot(dataMat, priceMat, 'g', lw=5) # 绘图完毕 plt.show()