TensorFlow-神经网络初始

TensorFlow 编程基础

TensorFlow中的张量概念

TensorFlow用张量这种数据结构来表示所有的数据,可以把一个张量想象成一个n维的数组,一个张量有一个静态类型和动态类型的维数,张量可以在图中的节点之间流通,张量没有真正保存数字,它保存的是计算过程

变量、常量和占位符区别

常量不能改变,不需要进行初始化操作;变量在运行过程中值会改变,须进行初始化操作创建语句,增加了一个init初始化变量,并调用绘画的run命令对参数进行初始化;占位符不包含任何数据,因此不需要初始化,是TensorFlow中特有的一种数据结构,类似动态变量,函数的参数、或者C语言或者Pyrhon语言中格式化输出时的 ”%”。

总结变量初始化方式

个别变量初始化

init_op = name_variable.initializer()

所有变量初始化

init_op = tf.global_variables_initializer()

若一个变量的初始化依赖于其他变量的初始化,为了确保初始化顺序不能错,可以使用initialized_value()

TensorBoard使用方法

在python程序末尾确定输出的日志文件log位置

1
2
3
4
5
logdir='C:/Users/xxx/Desktop/log'

writer = tf.summary.FileWriter(logdir,tf.get_default_graph())

writer.close()

这里需要注意的是目录的路径中不能使用 “\“ ,可能会导致一些不能解析的错误

命令行进入日志存放目录中执行

tensorboard –logdir=/path/log

然后浏览器进入http://localhost:6006/ 即可

单变量线性回归

形如y = w * x + b

给出一堆 x,和对应的标签 y,给出一个新的 x,希望算出来对应的 y;这种一次线性的模型,需要做的就是确定相关的 w、b 参数,模型内部的参数值是通过学习得到的

使用Tensorflow解决单变量线性回归问题的主要步骤

  • 生成人工数据集及其可视化

  • 构建线性模型

  • 定义损失函数

  • 定义优化器、最小化损失函数

  • 训练结果的可视化

  • 利用学习到的模型进行预测

多元线性回归

多元线性回归中的模型训练方法

  • 设置训练超参数

  • 定义均方差损失函数

  • 选择优化器

  • 声明会话

  • 启动会话

  • 迭代训练

如何对特征数据进行归一化处理

(特征值-特征值最小值)/(特征值最大值-特征值最小值)

卷积神经网络

使用卷积层与使用全连接层的区别

卷积层:卷积运算的主要目的是使原信号特征增强,并降低噪音;每个输出特性不用查看每个输入特征,而只需查看部分输入特征,卷积核在图像上滑动过程中保持不变。

全连接层:对生成的特征进行加权;每个输出都是所有输入数据的加权求和。

总结卷积核、多通道卷积及池化操作

每个卷积核都会将图像生成为另一幅特征映射图,即:一个卷积核提取一种特征。为了使特征提取更充分,可以添加多个卷积核以提取不同的特征,也就是,多通道卷积。计算图像一个区域上的某个特定特征的平均值或最大值,这种聚合操作就叫做池化。卷积层的作用是探测上一层特征的局部连接,而池化的作用是在语义上把相似的特征合并起来,从而达到降维目的。

深度神经网络

数据增强的主要方式

水平翻转,上下翻转、改变对比度、剪裁或填充后缩放,随机裁剪、白化处理、

Deep Dream的技术原理

假设输入图像是 x,把图像输入到卷积神经网络中,输出的结果是各个类别的概率,指定一个标签,通过预测结果与指定标签之间的误差来反向传播到输入图像,这里调整的是输入图像的像素值,而不是卷积神经网络,卷积神经网络的参数是固定的,所以只需要导入已经训练好的模型,预训练模型。在生成某一类别图像的时候,通过最大化输出层输出的这一类别的概率来实现目标,通过最大化卷积层某一通道的激活值来可视化卷积层的特征。