序
6月28号回家,玩、开始有写博客的想法、玩、看完Python基础,终于终于终于开始写Deep Learning的部分了
一、环境搭建
因为没啥基础,我这里用的是最low的开发平台
win10+Anaconda 3+Python 3.6+OpenCV 3.4.2+TensorFlow 1.13
整个搭建过程还算是比较简单的,唯一可能出现的问题就是网速很慢,网上有很多教程,自行百度,我就简单介绍一下安装过程
下载安装Anaconda,官网上会提供3.6和2.7两个版本,自行选择
-
安装完成打开,Anaconda Navigator创建一个新的环境,点击左下角create如图
-
创建完成后,需要安装OpenCV和TensorFlow两个库
-
最后在搭建的环境下安装Notebook
二、入门基础
1. 使用OpenCV实现图像的读、写、操作
import cv2 #引入OpenCV包
img=cv2.imread('image0.jpg',1) #读取图片,第一个参数是文件名,第二个参数0表示读取灰色图像,1表示读取彩色图像
## 1.写入对象 2.源图像 3.写入图像质量
cv2.imwrite('imageTest.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,50])
#1M 100k 10k 0-100 有损压缩
#-----------------------------------------------------------------------
(b,g,r)=img[100,100] #利用元组读取对应像素点的数据
print (b,g,r)
# 修改数据
for i in range(1,100):
img[i,100]=(255,0,0)
cv2.imshow('image',img) #图片展示,1.展示图像名称 2.图像源
cv2.waitKey(0) #等待,与c语言的控制台显示一样意思
2. Numpy和Matplot的基本用法
严格意义上来说还需要掌握Pandas,这三个是数据处理必要的小技能了,
import numpy as np
import matplotlib.pyplot as plt
你大概需要掌握这些:
- Numpy创建数组
1.使用np.array()由python list创建
2.使用np的routines函数创建
2.1 np.ones()
2.2 zeros()
2.3 np.full()
2.4 np.eye()
2.5 np.linspace()
2.6 arange()
2.7 randint()
2.8 randn() 正态分布
2.9 normal() 正态分布
2.10 random_sample() 生成0到1的随机数
- Numpy查看数组属性
1.数组元素个数
2.数组形状
3.数组维度
4.数组元素类型
- 数组的基本操作
1.索引
2.切片
3.变形
4.级联
5.切分
- Numpy计算
条件运算
统计运算
数组运算
矩阵运算
矩阵的广播
- 认识Matploblib
1.1 Figure
1.2 Axes
1.3 Multiple Axes
- 基本绘图
2.1 线
2.2 散点图
2.3 条形图
2.4 直方图
2.5 饼图
- 图信息修改
3.1 区间上下限
3.2 图例说明
3.3 区间分段
3.4 布局
3.5 轴相关
其实我也不是很会,起码做到心里有数吧,我放上几个参考链接:
Numpy基本用法
菜鸟教程 Numpy使用方法
matplot的基本用法
3. TensorFlow的基本概念与用法
Tensorflow是一种计算图模型,即用图的形式来表示运算过程的一种模型。Tensorflow程序一般分为图的构建和图的执行两个阶段。
图的构建阶段也称为图的定义阶段:在图模型中定义所需的运算,每次运算的的结果以及原始的输入数据都可称为一个节点
图模型的构建阶段:只在图中定义所需要的运算,而没有去执行运算
这里通过代码的形式对TensorFlow的基本用法进行介绍:
源码:主要参考的是我学习的慕课网的人工智能图像处理入门课程
- 常量与变量的定义以及Session的两种运行方式
import tensorflow as tf
#定义一个常量
data1 = tf.constant(2,dtype=tf.int32)
#声明一个变量
data2 = tf.Variable(10,name='var')
print(data1)
print(data2)
'''
两种方式的主要差别在于,后一种不需要调用.close()方法
sess = tf.Session()
print(sess.run(data1))
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(data2))
sess.close()
# 本质 tf = tensor + 计算图
# tensor 数据
# op
# graphs 数据操作
# session
'''
init = tf.global_variables_initializer()
sess = tf.Session()
with sess:
sess.run(init)
print(sess.run(data2))
#--------------------------------------
Tensor("Const_4:0", shape=(), dtype=int32)
<tf.Variable 'var_4:0' shape=() dtype=int32_ref>
2
10
- 四则运算
import tensorflow as tf
data1 = tf.constant(6)
data2 = tf.Variable(2)
dataAdd = tf.add(data1,data2)
dataCopy = tf.assign(data2,dataAdd)# dataAdd ->data2
dataMul = tf.multiply(data1,data2)
dataSub = tf.subtract(data1,data2)
dataDiv = tf.divide(data1,data2)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(dataAdd))
print(sess.run(dataMul))
print(sess.run(dataSub))
print(sess.run(dataDiv))
print('sess.run(dataCopy)',sess.run(dataCopy))#8->data2
print('dataCopy.eval()',dataCopy.eval())#8+6->14->data = 14
print('tf.get_default_session()',tf.get_default_session().run(dataCopy))
print('end!')
#-----------------------------------------------------------
8
12
4
3.0
sess.run(dataCopy) 8
dataCopy.eval() 14
tf.get_default_session() 20
end!
- 矩阵基础
#placehold
import tensorflow as tf
data1 = tf.placeholder(tf.float32)
data2 = tf.placeholder(tf.float32)
dataAdd = tf.add(data1,data2)
with tf.Session() as sess:
print(sess.run(dataAdd,feed_dict={data1:6,data2:2}))
# 1 dataAdd 2 data (feed_dict = {1:6,2:2})
print('end!')
#----------------------------
8.0
end!
#-------------------------------
#类比 数组 M行N列 [] 内部[] [里面 列数据] [] 中括号整体 行数
#[[6,6]] [[6,6]]
import tensorflow as tf
data1 = tf.constant([[6,6]])
data2 = tf.constant([[2],
[2]])
data3 = tf.constant([[3,3]])
data4 = tf.constant([[1,2],
[3,4],
[5,6]])
print(data4.shape)# 维度
with tf.Session() as sess:
print(sess.run(data4)) #打印整体
print(sess.run(data4[0]))# 打印某一行
print(sess.run(data4[:,0]))#MN 列
print(sess.run(data4[0,1]))# 1 1 MN = 0 32 = M012 N01
#-----------------------------------------------------
(3, 2)
[[1 2]
[3 4]
[5 6]]
[1 2]
[1 3 5]
2
import tensorflow as tf
mat0 = tf.constant([[0,0,0],[0,0,0]])
mat1 = tf.zeros([2,3])
mat2 = tf.ones([3,2])
mat3 = tf.fill([2,3],15)
with tf.Session() as sess:
#print(sess.run(mat0))
#print(sess.run(mat1))
#print(sess.run(mat2))
print(sess.run(mat3))
#-----------------------------------------
8.0
end!
#---------------------------------------
#---------------------------------------
import tensorflow as tf
mat1 = tf.constant([[2],[3],[4]])
mat2 = tf.zeros_like(mat1)
mat3 = tf.linspace(0.0,2.0,11)
mat4 = tf.random_uniform([2,3],-1,2)
with tf.Session() as sess:
print(sess.run(mat2))
print(sess.run(mat3))
print(sess.run(mat4))
#-------------------------------------------
[[0]
[0]
[0]]
[ 0. 0.2 0.40000001 0.60000002 0.80000001 1.
1.20000005 1.39999998 1.60000002 1.80000007 2. ]
[[ -1.66177750e-04 7.87446260e-01 -4.10951853e-01]
[ -9.58950400e-01 1.97116375e-01 -2.69421697e-01]]
小结
也算是正式开始研究生生活,我总感觉自己能潇洒的好日子不多了。希望能坚持下去,周更吧!