pnn的意思是测井仪,是奥地利Hotwell公司研制开发的一种用于油田生产开发的饱和度测井仪器。
一、测井仪
1、该仪器已经在欧洲,南,北美洲,中东,北非和亚洲18个国家广泛应用,取得了较好的使用效果。
2、油田进入高含水的中,后开发期,一方面迫切需要了解单井,区域上的储层的剩余油分布,寻找潜力油层,调整作业方案;另一方面,许多老井,由于受当时条件的限制,缺少必要的测井资料,而无法对储层性质进行重新认识。
3、油井生产之前都会下套管进行固井。因为套管的物理特性,很多裸眼井中的测井方法受到了限制,不能用于套管井的地层评价。
4、套管井中使用最多的饱和度测井方法都是基于中子寿命测井原理的,如油田内常见的碳氧比测井,中子寿命测井,硼中子测井,PND测井等等。PNN测井同样基于这个原理。
二、神经网络
1、概率神经网络(PNN)于1989年由DFSpecht博士首先提出,是一种常用于模式分类的神经网络。
2、概率神经网络是基于统计原理的神经网络模型,在分类功能上与最优Bayes分类器等价,其实质是基于贝叶斯最小风险准则发展而来的一种并行算法,同时它不像传统的多层前向网络那样需要用BP算法进行反向误差传播的计算,而是完全前向的计算过程。
3、它训练时间短,不易产生局部最优,而且它的分类正确率较高。无论分类问题多么复杂只要有足够多的训练数据,可以保证获得贝叶斯准则下的最优解。
神经网络的学习内容主要包括:
感知机(perceptron):是一种线性分类模型,能够解决二分类问题。
多层感知机(multilayer perceptron, MLP):是一种由多个感知机堆叠而成的神经网络模型,能够解决多分类问题。
卷积神经网络(convolutional neural network, CNN):是一种深度学习模型,能够自动学习数据的特征,并在图像、视频、文本等数据中进行分类、分析和识别。
循环神经网络(recurrent neural network, RNN):是一种深度学习模型,能够处理序列数据,如文本、语音、时间序列等。常见的有LSTM和GRU等。
用Keras搭建神经网络的步骤:
深度学习框架Keras——像搭积木般构建神经网络,主要分为7个部分,每个部分只需要几个keras API函数就能实现,用户即可像搭积木般一层层构建神经网络模型。
1 创建模型 Create model
2 添加层级 Add Layer
3 模型编译 Compile
4 数据填充 Fit
5 模型评估 Evaluate
6 模型预测 Predict
7 模型保存 Save model
下面章节会对每一部分具体来介绍。。。
Keras 中主要有三类模型:Sequential model, Functional model, Subclass model
在开始创建模型之前,首先需要引入tensorflow和keras模块,然后再创建一个Sequential model
Sequential API定义如下:
layers参数可以为空, 然后通过add method向模型中添加layer,相对应的通过pop method移除模型中layer。
创建Function API模型,可以调用KerasModel来指定多输入多数出。
KerasModel定义:
Layers是神经网络基本构建块。一个Layer包含了tensor-in/tensor-out的计算方法和一些状态,并保存在TensorFlow变量中(即layers的权重weights)。
Layers主要分为6个类别,基础层,核心层,卷基层,池化层,循环层,融合层。
对派生类的实现可以用以下方法:
init (): 定义layer的属性,创建layer的静态变量。
build(self, input_shape): 创建依赖于输入的变量,可以调用add_weight()。
call(self, args, kwargs): 在确保已调用build()之后,在 call 中调用。
get_config(self): 返回包含用于初始化此层的配置的字典类型。
创建SimpleDense派生类,在build()函数里添加trainable weights。实现y=inputw +b
结果输出:
创建ComputeSum派生类,在 init 函数里添加 non-trainable weights。实现输入矩阵沿轴0元素相加后,x=x+selftotal
结果输出:
核心层是最常用的层,涉及到数据的转换和处理的时候都会用到这些层。
Dense层就是所谓的全连接神经网络层,简称全连接层。全连接层中的每个神经元与其前一层的所有神经元进行全连接。
Dense 实现以下 *** 作: output = activation(dot(input, kernel) + bias) 其中 activation 是按逐个元素计算的激活函数,kernel 是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias 为 True 时才有用)。
将激活函数应用于输出。输入信号进入神经元后进行的运算处理。
sigmoid、tanh、ReLU、softplus的对比曲线如下图所示:
激活函数可以通过设置单独的激活层Activation实现,也可以在构造层对象时通过传递 activation 参数实现:
Dropout在训练中每次更新时,将输入单元的按比率随机设置为0,这有助于防止过拟合。未设置为0的输入将按1 /(1-rate)放大,以使所有输入的总和不变。
请注意,仅当训练设置为True时才应用Dropout层,以便在推理过程中不会丢弃任何值。 使用modelfit时,训练将自动适当地设置为True。
将输入展平。不影响批量大小。注意:如果输入的形状是(batch,)没有特征轴,则展平会增加通道尺寸,而输出的形状是(batch, 1)。
将输入重新调整为特定的尺寸
将任意表达式封装为Layer对象。在Lambda层,以便在构造模型时可以使用任意TensorFlow函数。 Lambda层最适合简单 *** 作或快速实验。 Lambda层是通过序列化Python字节码来保存的。
使用覆盖值覆盖序列,以跳过时间步。
对于输入张量的每一个时间步(张量的第一个维度),如果所有时间步中输入张量的值与mask_value相等,则将在所有下游层中屏蔽(跳过)该时间步。如果任何下游层不支持覆盖但仍然收到此类输入覆盖信息,会引发异常。
举例说明:
Embedding 是一个将离散变量转为连续向量表示的一个方式。该层只能用作模型中的第一层。
Embedding 有以下3个主要目的: 在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。 作为监督性学习任务的输入。 用于可视化不同离散变量之间的关系
举例说明:
输出结果:
由维基百科的介绍我们可以得知,卷积是一种定义在两个函数(𝑓跟𝑔)上的数学 *** 作,旨在产生一个新的函数。那么𝑓和𝑔的卷积就可以写成𝑓∗𝑔,数学定义如下:
对应到不同方面,卷积可以有不同的解释:𝑔 既可以看作我们在深度学习里常说的核(Kernel),也可以对应到信号处理中的滤波器(Filter)。而 𝑓 可以是我们所说的机器学习中的特征(Feature),也可以是信号处理中的信号(Signal)。f和g的卷积 (𝑓∗𝑔)就可以看作是对𝑓的加权求和。
一维时域卷积 *** 作:
二维图像卷积 *** 作:
卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。
一维卷积层(即时域卷积),用以在一维输入信号上进行邻域滤波。
举例说明:
结果输出:
2D 卷积层 (例如对图像的空间卷积)。
举例说明:
结果输出:
3D卷积层(例如体积上的空间卷积)
举例说明:
结果输出:
深度可分离1D卷积。该层执行分别作用在通道上的深度卷积,然后是混合通道的逐点卷积。 如果use_bias为True并提供了一个偏差初始值设定项,则它将偏差向量添加到输出中。 然后,它可选地应用激活函数以产生最终输出。
深度可分离的2D卷积。可分离的卷积包括首先执行深度空间卷积(它分别作用于每个输入通道),然后是点向卷积,它将混合所得的输出通道。 depth_multiplier参数控制在深度步骤中每个输入通道生成多少个输出通道。
直观上,可分离的卷积可以理解为将卷积内核分解为两个较小内核的一种方式,或者是Inception块的一种极端版本。
转置卷积层 (有时被成为反卷积)。对转置卷积的需求一般来自希望使用 与正常卷积相反方向的变换,将具有卷积输出尺寸的东西 转换为具有卷积输入尺寸的东西, 同时保持与所述卷积相容的连通性模式。
池化层是模仿人的视觉系统对数据进行降维,用更高层次的特征表示图像。实施池化的目的:降低信息冗余;提升模型的尺度不变性、旋转不变性。 防止过拟合。
通常有最大池化层,平均池化层。
池化层有三种形态:1D 用于一维数据,2D 一般用于二维图像数据,3D 带时间序列数据的图像数据
循环神经网络(Recurrent Neural Network, 简称 RNN),循环神经网络的提出便是基于记忆模型的想法,期望网络能够记住前面出现的特征,并依据特征推断后面的结果,而且整体的网络结构不断循环,因此得名为循环神经网络。
长短期记忆网络(Long-Short Term Memory, LSTM )论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。
举例说明:
结果输出:
GRU 门控循环单元- Cho et al 2014
在LSTM中引入了三个门函数:输入门、遗忘门和输出门来控制输入值、记忆值和输出值。而在GRU模型中只有两个门:分别是更新门和重置门。与LSTM相比,GRU内部少了一个”门控“,参数比LSTM少,但是却也能够达到与LSTM相当的功能。考虑到硬件的计算能力和时间成本,因而很多时候我们也就会选择更加”实用“的GRU。
举例说明:
结果输出:
循环神经网络层基类。
关于指定 RNN 初始状态的说明
您可以通过使用关键字参数 initial_state 调用它们来符号化地指定 RNN 层的初始状态。 initial_state 的值应该是表示 RNN 层初始状态的张量或张量列表。
可以通过调用带有关键字参数 states 的 reset_states 方法来数字化地指定 RNN 层的初始状态。 states 的值应该是一个代表 RNN 层初始状态的 Numpy 数组或者 Numpy 数组列表。
关于给 RNN 传递外部常量的说明
可以使用 RNN call (以及 RNNcall)的 constants 关键字参数将「外部」常量传递给单元。 这要求 cellcall 方法接受相同的关键字参数 constants。 这些常数可用于调节附加静态输入(不随时间变化)上的单元转换,也可用于注意力机制。
举例说明:
在训练模型之前,我们需要配置学习过程,这是通过compile方法完成的。
他接收三个参数:优化器 opt
数学建模中常用的模型有以下几种:
1 线性规划模型:线性规划是一种优化问题的数学模型,可用于在给定的约束条件下,最大化或最小化线性函数的值。线性规划广泛应用于生产排程、资源分配、运输问题等领域。
2 非线性规划模型:非线性规划是一种优化问题的数学模型,可用于在给定的约束条件下,最大化或最小化非线性函数的值。非线性规划广泛应用于工程设计、经济分析、生态保护等领域。
3 时间序列模型:时间序列模型是一种用于分析时间序列数据的数学模型,可用于预测未来的趋势和周期性变化。时间序列模型广泛应用于经济预测、股票交易、气象预报等领域。
4 随机过程模型:随机过程是一种描述随机现象的数学模型,可用于分析随机过程的演化规律。随机过程模型广泛应用于金融风险评估、信号处理、通信系统设计等领域。
5 神经网络模型:神经网络是一种模拟人脑神经系统的数学模型,可用于模拟和预测复杂的非线性系统。神经网络模型广泛应用于图像处理、语音识别、智能控制等领域。
6 遗传算法模型:遗传算法是一种模拟自然选择和遗传机制的数学模型,可用于求解复杂的优化问题。遗传算法模型广泛应用于工程设计、计划问题、机器学习等领域。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)