anaconda提供了一个默认的base环境,也可以直接在base环境中开发应用程序。基于课程内容需要,我们创建tensorflow-cpu环境
conda create -n env_name python=x.x
-n表示环境名称参数,
env_name为待创建虚拟开发环境的名称,
x.x表示该环境中python的版本是多少
启动windows命令行窗口,在窗口输入下面的命令
conda create -n tensorflow-cpu python=3.9
若出现‘conda’不是内部或外部命令,也不是可运行的程序等信息,需要配置anaconda系统环境变量。命令执行完成,名称为tensorflow-cpu的虚拟开发环境就创建成功了。
查看当前anaconda有哪些虚拟环境
conda env list
激活命令:命令激活环境后,才能进入该虚拟环境进行编程
conda activate env_name
退出环境命令
若需要退出当前虚拟开发环境,可以使用下面的命令:
conda deactivate
删除环境命令
该命令需谨慎使用,因为该命令会删除虚拟环境下的所有数据
conda remove -n env_name --all
安装python依赖包
在tensorflow-cpu环境下使用pip工具软件安装numpy、matplotlib、pillow、pandas、scikit-learn。
启动windows命令行窗口,在命令行窗口输入激活命令,激活tensorflow-cpu环境。
conda activate tensorflow-cpu
tensorflow-cpu环境激活后,使用pip工具分别安装上述python依赖包。安装建议使用清华大学镜像站。如安装numpy命令如下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
pip安装matplotlib时,会自动安装pillow包。
安装tensorflow-cpu版本
tensorflow分为两个版本,一个是cpu版本,一个是gpu版本。gpu版本充分应用了图形处理器的计算引擎,缩短模型训练的时间,gpu版本需要独立显卡的支持
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==2.6.0
上面的命令将在本地安装tensorflow 2.6.0版本,默认安装是cpu模式。
安装完成,需要验证tensorflow 2.6.0是否安装成功。
启动windows命令行窗口,使用conda激活命令激活tensorflow-cpu环境,进入python环境。
c:\users\1>conda activate tensorflow-cpu
(tensorflow-cpu) c:\users\1>
(tensorflow-cpu) c:\users\1>python
>>> import tensorflow as tf
>>> print(tf.__version__)
2.6.0
三、image understanding with tensorflow on gcp(通过tensorflow进行图像处理)
1.神经网络原理
这里的神经网络,也指(artificial neural networks,简称anns),是一种模仿生物神经网络行为特征的算法数学模型,由神经元、节点与节点之间的连接(突触)所构成。
2.卷积层
图像分析研究的领域一般包括:
3.池化层
既对数据进行降采样(down-sampling)操作,又可以用p范数(p-norm)作非线性映射的“卷积” p范数:||a||p=(m∑i=1n∑j=1|aij|p)1/p,p>=1p范数:||a||p=(∑i=1m∑j=1n|aij|p)1/p,p>=1
当 p→∞p→∞ 时即为最大池化
具体作用为:
- 特征不变性–使模型更关注包含一定的自由度,能容忍特征微小的位移
- 特征降维–降采样使后续操作的计算量得到减少
- 一定程度防止过拟合
池化层的作用
池化层用于进一步缩小经卷积层处理过后的节点矩阵,从而进一步减少最后交付给全连接神经网络的参数个数。虽然池化层的作用遭到过质疑,但是在大多数模型中仍然使用了池化层。
池化层的处理
池化层中有一个类似于卷积层中过滤器的设置。不过相比卷积层中过滤器的加权求和,池化层中过滤器只是简单地求相应尺寸内子节点矩阵的最大值或者平均值。
池化层与卷积层的区别
池化层中的过滤器与卷积层中过滤器最大的区别是:卷积层内的过滤器可以同时处理当前层中整个深度下的子节点矩阵,而池化层内的过滤器只能一层层深度地处理当前层的子节点矩阵。所以池化层过滤器除了像卷积层内一样在二维上从节点矩阵左上角移动至右下角以外,还会在深度上进行移动。
4.tensorflow中的最大池化层
tf.nn.max_pool()最大池化
函数:
实验:
这里直接附上实验代码
import tensorflow as tf
#case 2
input = tf.variable(tf.random_normal([1,3,3,5]))
filter = tf.variable(tf.random_normal([1,1,5,1]))
op2 = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='valid')
#case 3
input = tf.variable(tf.random_normal([1,3,3,5]))
filter = tf.variable(tf.random_normal([3,3,5,1]))
op3 = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='valid')
#case 4
input = tf.variable(tf.random_normal([1,5,5,5]))
filter = tf.variable(tf.random_normal([3,3,5,1]))
op4 = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='valid')
#case 5
input = tf.variable(tf.random_normal([1,5,5,5]))
filter = tf.variable(tf.random_normal([3,3,5,1]))
op5 = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='same')
#case 6
input = tf.variable(tf.random_normal([1,5,5,5]))
filter = tf.variable(tf.random_normal([3,3,5,7]))
op6 = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='same')
#case 7
input = tf.variable(tf.random_normal([1,5,5,5]))
filter = tf.variable(tf.random_normal([3,3,5,7]))
op7 = tf.nn.conv2d(input, filter, strides=[1, 2, 2, 1], padding='same')
#case 8
input = tf.variable(tf.random_normal([10,5,5,5]))
filter = tf.variable(tf.random_normal([3,3,5,7]))


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事it行业的老鸟或是对it行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
g-ysk8nrkf-1714226538379)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事it行业的老鸟或是对it行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
发表评论