前馈神经网络解密:深入理解人工智能的基石
目录
- 一、前馈神经网络概述
- 什么是前馈神经网络
- 前馈神经网络的工作原理
- 应用场景及优缺点
- 二、前馈神经网络的基本结构
- 输入层、隐藏层和输出层
- 激活函数的选择与作用
- 网络权重和偏置
- 三、前馈神经网络的训练方法
- 损失函数与优化算法
- 反向传播算法详解
- 避免过拟合的策略
- 四、使用Python和PyTorch实现FNN
- 4.1 准备数据集
- 选择合适的数据集
- 数据预处理
- PyTorch数据加载器
- 4.2 构建模型结构
- 定义网络架构
- 选择激活函数
- 权重初始化
- 构建与任务相匹配的损失函数
- 4.3 训练模型
- 选择优化器
- 训练循环
- 模型验证
- 调整学习率
- 保存和加载模型
- 可视化训练过程
- 4.4 模型评估与可视化
- 评估指标
- 模型验证
- 混淆矩阵
- ROC和AUC
- 特征重要性和模型解释
- 可视化隐藏层
- 五、前馈神经网络的先进变体与应用
- 多层感知器(MLP)
- 卷积神经网络(CNN)
- 循环神经网络(RNN)
- Transformer结构
- 强化学习中的FNN
- 生成对抗网络(GAN)
- FNN在医学图像分析中的应用
- 六、总结与未来展望
- 总结
- 未来展望
- 结语
本文深入探讨了前馈神经网络(FNN)的核心原理、结构、训练方法和先进变体。通过Python和PyTorch的实战演示,揭示了FNN的多样化应用。
作者TechLead,拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。
一、前馈神经网络概述
前馈神经网络(Feedforward Neural Network, FNN)是神经网络中最基本和经典的一种结构,它在许多实际应用场景中有着广泛的使用。在本节中,我们将深入探讨FNN的基本概念、工作原理、应用场景以及优缺点。
什么是前馈神经网络
前馈神经网络是一种人工神经网络,其结构由多个层次的节点组成,并按特定的方向传递信息。与之相对的是递归神经网络,其中信息可以在不同层之间双向传递。
- 结构特点: 由输入层、一个或多个隐藏层和输出层组成。
- 信息流动: 信息仅在一个方向上流动,从输入层通过隐藏层最终到达输出层,没有反馈循环。
前馈神经网络的工作原理
前馈神经网络的工作过程可以分为前向传播和反向传播两个阶段。
- 前向传播: 输入数据在每一层被权重和偏置加权后,通过激活函数进行非线性变换,传递至下一层。
- 反向传播: 通过计算输出误差和每一层的梯度,对网络中的权重和偏置进行更新。
应用场景及优缺点
前馈神经网络在许多领域都有着广泛的应用,包括图像识别、语音处理、金融预测等。
- 优点:
- 结构简单,易于理解和实现。
- 可以适用于多种数据类型和任务。
- 缺点:
- 对于具有时序关系的数据处理能力较弱。
- 容易陷入局部最优解,需要合理选择激活函数和优化策略。
二、前馈神经网络的基本结构
前馈神经网络(FNN)的基本结构包括输入层、隐藏层和输出层,以及相应的激活函数、权重和偏置。这些组成部分共同构成了网络的全貌,并定义了网络如何从输入数据中提取特征并进行预测。本节将详细介绍这些核心组成部分。
输入层、隐藏层和输出层
前馈神经网络由三个主要部分组成:输入层、隐藏层和输出层。
- 输入层: 负责接收原始数据,通常对应于特征的维度。
- 隐藏层: 包含一个或多个层,每层由多个神经元组成,用于提取输入数据的抽象特征。
- 输出层: 产生网络的最终预测或分类结果。
激活函数的选择与作用
激活函数是神经网络中非常重要的组成部分,它向网络引入非线性特性,使网络能够学习复杂的函数。
- 常见激活函数: 如ReLU、Sigmoid、Tanh等。
- 作用: 引入非线性,增强网络的表达能力。
网络权重和偏置
权重和偏置是神经网络的可学习参数,它们在训练过程中不断调整,以最小化预测错误。
- 权重: 连接各层神经元的线性因子,控制信息在神经元之间的流动。
- 偏置: 允许神经元在没有输入的情况下激活,增加模型的灵活性。
三、前馈神经网络的训练方法
前馈神经网络(FNN)的训练是一个复杂且微妙的过程,涉及多个关键组件和技术选择。从损失函数的选择到优化算法,再到反向传播和过拟合的处理,本节将深入探讨FNN的训练方法。
损失函数与优化算法
损失函数和优化算法是神经网络训练的基石,决定了网络如何学习和调整其权重。
- 损失函数: 用于衡量网络预测与实际目标之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵损失等。
- 优化算法: 通过最小化损失函数来更新网络权重,常见的优化算法包括随机梯度下降(SGD)、Adam、RMSProp等。
反向传播算法详解
反向传播是一种高效计算损失函数梯度的算法,它是神经网络训练的核心。
- 工作原理: 通过链式法则,从输出层向输入层逐层计算梯度。
- 权重更新: 根据计算的梯度,使用优化算法更新网络的权重和偏置。
避免过拟合的策略
过拟合是训练神经网络时常遇到的问题,有多种策略可以减轻或避免过拟合。
- 早停法(Early Stopping): 当验证集上的性能停止提高时,提前结束训练。
- 正则化: 通过在损失函数中添加额外的惩罚项,约束网络权重,例如L1和L2正则化。
- Dropout: 随机关闭部分神经元,增加模型的鲁棒性。
四、使用Python和PyTorch实现FNN
在理解了前馈神经网络的理论基础之后,我们将转向实际的编程实现。在本节中,我们将使用Python和深度学习框架PyTorch实现一个完整的前馈神经网络,并逐步完成数据准备、模型构建、训练和评估等关键步骤。
4.1 准备数据集
准备数据集是构建神经网络模型的第一步。我们需要确保数据的质量和格式适合神经网络训练。
选择合适的数据集
选择与任务匹配的数据集是成功训练模型的关键。例如,对于图像分类任务,MNIST和CIFAR-10等都是流行的选择。
数据预处理
预处理是准备数据集中的重要步骤,包括以下几个方面:
- 数据标准化/归一化: 将数据转换为具有零均值和单位方差的形式,有助于模型的训练和收敛。
- 数据增强: 通过旋转、剪裁、缩放等手段增加数据的多样性,有助于提高模型的泛化能力。
- 划分训练集、验证集和测试集: 合理的数据划分有助于评估模型在未见数据上的性能。
PyTorch数据加载器
PyTorch提供了DataLoader
类,可用于批量加载和混洗数据,使训练过程更加高效。
from torch.utils.data import DataLoadertrain_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
4.2 构建模型结构
在准备了适当的数据集之后,我们将转向使用Python和PyTorch构建前馈神经网络(FNN)的模型结构。构建模型结构包括定义网络的架构、选择激活函数和初始化权重等关键步骤。
定义网络架构
我们可以使用PyTorch的nn.Module
类来定义自定义的网络结构。以下是一个具有单个隐藏层的FNN示例。
import torch.nn as nnclass SimpleFNN(nn.Module):def __init__(self, input_dim, hidden_dim, output_dim):super(SimpleFNN, self).__init__()self.hidden_layer = nn.Linear(input_dim, hidden_dim)self.output_layer = nn.Linear(hidden_dim, output_dim)self.activation = nn.ReLU()def forward(self, x):x = self.activation(self.hidden_layer(x))x = self.output_layer(x)return x
选择激活函数
激活函数的选择取决于特定的任务和层类型。在隐藏层中,ReLU通常是一个良好的选择。对于分类任务的输出层,Softmax可能更合适。
权重初始化
合适的权重初始化可以大大加快训练的收敛速度。PyTorch提供了多种预定义的初始化方法,例如Xavier和He初始化。
def init_weights(m):if type(m) == nn.Linear:nn.init.xavier_uniform_(m.weight)m.bias.data.fill_(0.01)model = SimpleFNN(784, 256, 10)
model.apply(init_weights)
构建与任务相匹配的损失函数
损失函数的选择应与特定任务匹配。例如,对于分类任务,交叉熵损失是一个常见的选择。
loss_criterion = nn.CrossEntropyLoss()
4.3 训练模型
一旦构建了前馈神经网络(FNN)的模型结构,下一步就是训练模型。训练过程涉及多个关键步骤和技术选择,如下所述:
选择优化器
优化器用于更新模型的权重以最小化损失函数。PyTorch提供了多种优化器,例如SGD、Adam和RMSProp。
import torch.optim as optimoptimizer = optim.Adam(model.parameters(), lr=0.001)
训练循环
训练循环是整个训练过程的核心,其中包括前向传递、损失计算、反向传播和权重更新。
for epoch in range(epochs):for data, target in train_loader:optimizer.zero_grad()output = model(data)loss = loss_criterion(output, target)loss.backward()optimizer.step()
模型验证
在训练过程中定期在验证集上评估模型可以提供有关模型泛化能力的信息。
调整学习率
学习率是训练过程中的关键超参数。使用学习率调度程序可以根据训练进展动态调整学习率。
scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.7)
保存和加载模型
保存模型权重并能够重新加载它们是进行长期训练和模型部署的关键。
# 保存模型
torch.save(model.state_dict(), 'model.pth')# 加载模型
model.load_state_dict(torch.load('model.pth'))
可视化训练过程
使用例如TensorBoard的工具可视化训练过程,有助于理解模型的学习动态和调试问题。
4.4 模型评估与可视化
完成模型的训练之后,接下来的关键步骤是对其进行评估和可视化。这可以帮助我们理解模型的性能,并发现可能的改进方向。
评估指标
评估模型性能时,需要选择与任务和业务目标相符的评估指标。例如,分类任务常用的指标有准确率、精确率、召回率和F1分数。
from sklearn.metrics import accuracy_score# 计算准确率
accuracy = accuracy_score(targets, predictions)
模型验证
在测试集上验证模型可以提供对模型在未见过的数据上性能的公正评估。
混淆矩阵
混淆矩阵是一种可视化工具,可以揭示模型在不同类别之间的性能。
from sklearn.metrics import confusion_matrix
import seaborn as snscm = confusion_matrix(targets, predictions)
sns.heatmap(cm, annot=True)
ROC和AUC
对于二元分类任务,接收者操作特性(ROC)曲线和曲线下面积(AUC)是流行的评估工具。
特征重要性和模型解释
了解模型如何做出预测以及哪些特征对预测最有影响是可解释性分析的关键部分。
可视化隐藏层
通过可视化隐藏层的激活,我们可以深入了解网络是如何学习和表示输入数据的。
五、前馈神经网络的先进变体与应用
前馈神经网络(FNN)的基本结构已经非常成熟,但随着研究的不断深入和技术的不断进展,已经涌现出许多先进的变体和新颖的应用场景。本节将介绍一些值得关注的方向。
多层感知器(MLP)
MLP是最简单和常用的前馈神经网络类型,由全连接层组成。它在众多领域都有广泛应用,包括分类、回归和聚类。
卷积神经网络(CNN)
虽然CNN主要用于处理图像数据,但其基本原理和FNN有很多相似之处。通过引入卷积层,CNN能够有效捕获空间特征。
循环神经网络(RNN)
与FNN不同,RNN能够处理序列数据。这使得RNN在自然语言处理、时间序列分析等方面有非常广泛的应用。
Transformer结构
Transformer结构是当前自然语言处理中的前沿技术。虽然其结构与FNN有所不同,但某些设计思想和技术细节与FNN有共通之处。
强化学习中的FNN
FNN在强化学习中作为值函数或策略函数的近似器也有广泛应用。深度Q网络(DQN)就是一个典型例子。
生成对抗网络(GAN)
在GAN中,生成器和判别器通常采用FNN结构。GAN已经在图像生成、风格迁移等领域取得了令人瞩目的成就。
FNN在医学图像分析中的应用
FNN已经被成功用于解读医学图像,例如X光、MRI和CT扫描等,提供辅助诊断。
六、总结与未来展望
前馈神经网络(FNN)作为深度学习的基础,其影响深远且广泛。在本篇文章中,我们深入探讨了FNN的基本原理、结构设计、训练方法,还展示了使用Python和PyTorch构建和训练FNN的具体步骤。此外,我们还探讨了FNN的先进变体和广泛应用。下面是总结和未来展望。
总结
- 基本结构: FNN的基本结构清晰且灵活,可用于处理各种类型的数据。
- 训练方法: 借助梯度下降和反向传播,FNN可以有效地训练。
- 实战应用: 通过Python和PyTorch,我们能够快速实现和部署FNN。
- 先进变体: FNN的设计理念已被广泛应用于如CNN、RNN等更复杂的网络结构。
- 多领域应用: FNN已被成功用于众多领域,从图像识别到自然语言处理,再到医学诊断等。
未来展望
- 算法优化: 随着研究的深入,可以期待有更高效的训练算法和优化策略的出现。
- 新型结构: FNN的新型变体将继续涌现,为不同的应用需求提供更好的解决方案。
- 可解释性和可信赖性: 未来的研究将更加关注FNN的可解释性和可信赖性,使其更符合现实世界的需求和规范。
- 更广泛的应用: 随着技术的进步,FNN将在更多领域找到应用,可能涉及现今尚未涉及的问题领域。
- 跨学科研究: 通过与其他学科的交叉融合,FNN可能会孕育出全新的学科和应用方向。
结语
前馈神经网络作为深度学习领域的一块基石,其重要性不言而喻。随着技术的不断进步,我们可以期待FNN在未来将发挥更大的作用,推动人工智能领域的不断发展。无论是学术研究者还是工业界工程师,对FNN的深入理解和掌握都是探索这一令人兴奋领域的关键。
作者TechLead,拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。
相关文章:
前馈神经网络解密:深入理解人工智能的基石
目录 一、前馈神经网络概述什么是前馈神经网络前馈神经网络的工作原理应用场景及优缺点 二、前馈神经网络的基本结构输入层、隐藏层和输出层激活函数的选择与作用网络权重和偏置 三、前馈神经网络的训练方法损失函数与优化算法反向传播算法详解避免过拟合的策略 四、使用Python…...
顺序栈Sequential-stack
0、节点结构体定义 typedef struct SqStack{int *base;int *top; } SqStack; 1、初始化 bool InitStack(SqStack &S) {S.base new int[Maxsize]; //eg. #define Maxsize 100if(!S.base){return false;}S.top S.base;return true; } 2、入栈 bool Push(SqStack &…...
关于工牌(必须5-10个字)
今天蹲坑,低头看了下工牌觉得挺有意思:我从啥时候起也不排斥将工牌挂在脖子上了? 工牌,一个标识。不仅标识了你,也标识了你所在的群体。如果你认可这个群体,佩戴它那是一种荣誉、荣耀;如果你不…...
PHP混淆加密以及常用的一些加密工具
PHP混淆加密是一种将源代码转换为难以理解和阅读的方式,以保护代码的安全性。以下是一些常见的PHP混淆加密方法: 代码压缩:使用代码压缩工具(如UglifyJS)将PHP代码压缩为一行,去除空格、换行符等可读性的字…...
无涯教程-PHP - ereg()函数
ereg() - 语法 int ereg(string pattern, string originalstring, [array regs]); ereg()函数在string指定的字符串中搜索pattern指定的字符串,如果找到pattern,则返回true,否则返回false。搜索对于字母字符区分大小写。 可选的输入参数re…...
【Ubuntu】简洁高效企业级日志平台后起之秀Graylog
简介 Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中,我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容…...
TCP特点UDP编程
目录 1、tcp协议和udp协议 2、多线程并发和多进程并发: (1)多进程并发服务端 (2)多进程并发客户端: 3、tcp: 4、粘包 5、UDP协议编程流程 (1)服务器端: (2)客户端: 6、tcp状…...
超级计算机
超级计算机是一种高性能计算机,它能够以极高的速度执行大规模的计算任务。超级计算机通常由数千个甚至数百万个处理器组成,这些处理器能够同时处理大量的数据,从而实现高效的计算。超级计算机广泛应用于科学、工程、金融、天气预报等领域&…...
LeetCode863. 二叉树中所有距离为 K 的结点(相关话题:深度遍历,广度遍历)
题目描述 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 k 。 返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2 输出:[7,4,1] 解释…...
Kotlin 基础学习
NULL检查机制 Kotlin的空安全设计对于声明可为空的参数,在使用是进行空判断处理,有两种处理方式,字段后加 !! 像 java 一样抛出空异常,另外字段后面加 ? 可不做处理返回值为 null 或者配合 ?: 做空判断处理。 //类型后面加 ? 表…...
CW6B-90A-RCW6B-100A-RCW6B-110A-RCW6B-115A-R三相三线式滤波器
CW4B-10A-S CW4B-20A-S CW4B-30A-S三相三线式滤波器 CW6B-50A-S CW6B-60A-S CW6B-70A-S CW6B-80A-S CW6B-90A-S CW6B-100A-S CW6B-250A-S三相三线式滤波器 CW12B-3A-S(005) CW12B-6A-S(005) CW12B-10A-S(005) CW12B-20A-S(005 CW12B-30A-S(005) CW12B-40A-S(005)三…...
DP读书:鲲鹏处理器 架构与编程(九)鲲鹏920处理器片上系统
鲲鹏920片上系统 鲲鹏920处理器片上系统的组织与管理鲲鹏920片上系统的配置鲲鹏处理器多芯片系统鲲鹏2P多芯片系统鲲鹏4P多芯片系统鲲鹏920处理器片上系统和I/O桥组成的多芯片系统 鲲鹏920处理器的管理和安全架构鲲鹏920片上系统的PMU 鲲鹏920处理器片上系统的输入与输出鲲鹏92…...
【HBZ分享】java中的BitSet 与 Redis中的BitMap 与 布隆过滤器
BitMap的存储原理 bitMap他会标识出某个整数是否存在,存在即为1,不存在对应位即为0bitMap是存储int类型的,int 4byte, 1byte 8bit,因此bitMap数组中的每个下标可以标识出32个数字是否存在bitMap相当于一个个小格子&…...
《Linux从练气到飞升》No.16 Linux 进程地址空间
🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...
【算法题】7004. 判别首字母缩略词
题目: 给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,“ab” 可以由 [“a…...
ClickHouse(二十一):Clickhouse SQL DDL操作-临时表及视图
进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…...
redis乐观锁+启用事务解决超卖
乐观锁用于监视库存(watch),然后接下来就启用事务。 启用事务,将减库存、下单这两个步骤,放到一个事务当中即可解决秒杀问题、防止超卖。 但是!!!乐观锁,会带来" …...
智能画笔:如何利用AI绘画API打造独特的创作风格
在当今数字化时代,人工智能的迅猛发展正深刻地影响着各个领域,艺术创作也不例外。AI绘画 API 作为一种创新的工具,为艺术家提供了独特的机会,使他们能够在创作过程中借助人工智能技术,打造出独具个性的创作风格。本文将…...
ElasticSearchConfig
1. 添加配置 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId></dependency>2. es 配置信息 import org.apache.http.HttpHost; import org.apache.http.auth.Au…...
解决vant组件 van-dialog造成的页面闪动问题
解决方案:该问题是因为van-dialog默认是scale,将这个属性改为fade即可...
SpringBoot内嵌Tomcat连接池分析
文章目录 1 Tomcat连接池1.1 简介1.2 架构图1.2.1 JDK线程池架构图1.2.2 Tomcat线程架构 1.3 核心参数1.3.1 AcceptCount1.3.2 MaxConnections1.3.3 MinSpareThread/MaxThread1.3.4 MaxKeepAliveRequests1.3.5 ConnectionTimeout1.3.6 KeepAliveTimeout 1.4 核心内部线程1.4.1 …...
分布式协调服务中的几个常见算法
分布式协调服务中的几个常见算法包括: 1. 选主算法 用于从多个节点中选举出一个节点作为主节点或者领导者,常见的算法有Bully算法、Ring算法等。 2. 原子广播算法 用于向分布式系统中的所有节点广播消息,保证所有节点都可以收到消息,典型的两阶段提交协议实现了原子广播。…...
易服客工作室:Houzez主题 - 超级房地产WordPress主题/网站
Houzez主题是全球流行的房地产经纪人和公司的WordPress主题。 Houzez Theme是专业设计师创造一流设计的超级灵活起点。它具有您的客户(房地产经纪人或公司)甚至可能做梦也想不到的功能。 网址:Houzez主题 - 超级房地产WordPress主题/网站 - …...
mysql通过binlog日志恢复误删数据
1、先查看binlog功能是否开启 show variables like %log_bin%;log_bin为ON说明可以使用binlog恢复,如果为OFF说明没有开启binlog。 2、删除部分数据做测试 3、查找binlog文件位置 show variables like %datadir%;cd /var/lib/mysqlls -l删除数据时间是在文件154与…...
Istio入门体验系列——基于Istio的灰度发布实践
导言:灰度发布是指在项目迭代的过程中用平滑过渡的方式进行发布。灰度发布可以保证整体系统的稳定性,在初始发布的时候就可以发现、调整问题,以保证其影响度。作为Istio体验系列的第一站,本文基于Istio的流量治理机制,…...
CSS行内,内部,外部以及优先级
1.内联样式表: 将样式编写到style标签里 <style>.context {color: red;} </style> 2. 行内样式: 在 HTML 标签中使用 style 属性设置 CSS 样式 <div style"font-size: 18px;">行内样式</div> 3.外联样式࿱…...
LCA——最近公共祖先
LCA问题是指在一棵树中找到两个节点的最近公共祖先。最近公共祖先是指两个节点在树中的最近的共同祖先节点。例如,在下面这棵树中,节点 6 6 6和节点7的最近公共祖先是节点 3 3 3。 1/ \2 3/ \ / \4 5 6 7解决LCA问题的方法有很多种ÿ…...
游戏开发与硬件结合,开启全新游戏体验!
游戏与硬件的结合可以通过多种方式实现,从改善游戏体验到创造全新的游戏玩法。以下是一些常见的游戏与硬件结合的方式: 虚拟现实(VR)和增强现实(AR)技术:VR和AR技术使玩家能够沉浸式地体验游戏…...
测试框架pytest教程(4)运行测试
运行测试文件 $ pytest -q test_example.py 会运行该文件内test_开头的测试方法 该-q/--quiet标志使输出保持简短 测试类 pytest的测试用例可以不写在类中,但如果写在类中,类名需要是Test开头,非Test开头的类下的test_方法不会被搜集为用…...
Linux 上 离线部署GeoScene Server Py3 运行时环境
默认安装ArcGIS Pro的时候,会自动部署上Python3环境,所以在windows上不需要考虑这个问题,但是linux默认并不部署Py3,因此需要单独部署,具体部署可以参考Linux 上 ArcGIS Server 的 Python 3 运行时—ArcGIS Server | A…...
网站建设哪家更专业/最近热搜新闻事件
Java Applet:优点:无须下载插件,文件尺寸小下载快,最常用的全景显示插件,**缺点:幅面小,图像质量差,动态显示有跳动感不连续,不支持WindowsXP常用的Applet有:lpjpano或ptviewer支持cylindel,spherical,cubic制作工具软件:任何粘贴软件,如panorama tool等(.IVR)----------------…...
展示型网站制作公司/百度问答seo
郑重承诺:林哥团队15年分析经验,为大家做推荐,只为能和大家分享自己看好的比赛。希望大家多多关注,底部扫码添加好友,获取更多推荐。公推雷霆VS红队红队赢指没有命中,红队仅以两分优势险胜雷霆赢球输指。NB…...
怎样把自己做的网站上传到网上/武汉武汉最新
转载: https://zhangzifan.com/centos-7-remove-mysql.html...
wordpress操作/发帖推广哪个平台好
撰文:Offchain Labs编辑:南风编者按:L2 网络 Arbitrum One 自今年 9 月 1 日正式上线以来,因其提供廉价和快速的用户体验而迅速获得了巨大的吸引力。截至发文时,Arbitrum One 网络中的 TVL (总锁仓价值) 已经超过了 22…...
网站制作多少钱新闻/seo就是搜索引擎广告
事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并发执行…...
南宁小程序定制开发/seo基础入门教程
第一步:在窗体中添加一个PanelControl控件,该控件包含在工具箱中的DX.14.1: Navigation & Layout组件中。将该控件的Dock属性设置为“Fill”(此时该控件可以随着窗体缩放)。 第二步:在PanelControl控件中添加一个…...