郑州网站app建设微信应用平台开发

web/2025/10/4 13:12:59/文章来源:
郑州网站app建设,微信应用平台开发,电工培训,wordpress中文注册如果调试是消除软件错误的过程#xff0c;那么编程一定是添加错误的过程。Edsger Dijkstra。来自 https://www.azquotes.com/quote/561997 一、说明 在这篇文章中#xff0c;我想谈谈 TensorFlow 中的调试。 在之前的一些帖子#xff08;此处、此处和此处#xff09;中那么编程一定是添加错误的过程。Edsger Dijkstra。来自 https://www.azquotes.com/quote/561997 一、说明 在这篇文章中我想谈谈 TensorFlow 中的调试。  在之前的一些帖子此处、此处和此处中我向您介绍了我在 Mobileye正式称为 Mobileye英特尔公司的团队如何使用TensorFlow、Amazon SageMaker和Amazon s3来训练我们的基于大量数据的深度神经网络。 二、关于调试  众所周知程序调试是软件开发中不可或缺的一部分调试所花费的时间常常超过编写原始程序所花费的时间。 调试是困难的并且已经写了很多关于如何设计和实现程序以提高错误的再现性并简化根本原因分析过程的文章。 在机器学习中由于机器学习算法固有的随机性以及算法通常在远程计算机上的专用硬件加速器上运行调试任务变得复杂。 由于使用符号执行又名图形模式 TensorFlow 中的调试更加复杂这提高了训练会话的运行时性能但同时限制了自由读取图形中任意张量的能力这是一种能力这对于调试很重要。 在这篇文章中我将详细阐述调试 TensorFlow 训练程序的困难并就如何解决这些困难提供一些建议。 出于法律目的我想澄清的是尽管我精心选择了副标题但我不保证我在这里写的任何内容都会防止您失去理智。相反我认为我几乎可以保证无论我写了什么您在调试 TensorFlow 程序时都可能会失去理智。但是也许你会少一点失去理智。 在开始之前我们先澄清一下讨论的范围。 三、调试类型 在本文中调试是指识别代码或数据中导致训练课程突然中断的错误的艺术。 另一种调试超出了本文的范围它指的是修复或调整不收敛的模型的任务或者对某一类输入例如车辆检测产生不令人满意的预测的任务。无法识别粉色汽车的模型。此过程可能涉及定义和评估模型指标、模型工件例如梯度、激活和权重的收集和统计分析、使用 TensorBoard 和 Amazon Sagemaker Debugger 等工具、超参数调整、重新架构或使用技术修改数据输入例如增强和增强。调整模型可能是一项极具挑战性、耗时且常常令人沮丧的任务。 错误类型 在解决代码或数据中的错误领域内我喜欢区分两类错误错误和怪物错误。 我所说的错误是指相对容易重现的问题。错误的示例包括假设输入张量大小与训练数据不匹配的模型、尝试连接不匹配的张量或对无效数据类型执行 tf 操作。这些通常不依赖于特定的模型状态和数据并且通常相对容易重现。它们不一定很容易修复但与怪物错误相比它们只是小孩子的游戏。 怪物错误是零星发生且不可预测的错误。仅在模型的特定状态、特定数据样本或模型状态和数据输入的特定组合上重现的错误可能会带来严重的挑战并可能构成巨大的错误。 以下是基于真实事件的场景示例肯定会导致血压升高 现在是星期五下午您的模型已经成功训练了几天。损失似乎正在很好地收敛你开始想象在你选择的度假地点度过一个轻松的发布后周末假期。你回头看了一眼屏幕发现突然之间在没有任何警告的情况下你的损失变成了 NaN。“当然”你心里想“这一定是由于一些完全随机的、瞬时的、宏观故障造成的”然后你立即从最后一个有效的模型检查点恢复训练。又过了几个小时这种事又发生了然后又发生了。现在你开始恐慌周末天堂的梦幻画面现在被需要解决一个怪物错误的诱人努力的想法所取代。 我们很快就会回到这个悲惨的例子。但首先让我们勾选一些强制性的“调试”复选框。 四、Tensorflow 中的调试技巧 关于调试的艺术更重要的是开发可调试代码的艺术人们已经投入了大量的精力。在本节中我将提到一些与 TensorFlow 应用程序相关的技术。这个列表绝不是全面的。 4.1 保存模型检查点 这可能是我在这篇文章中要写的最重要的事情。请始终配置您的训练课程以便定期保存模型的快照。 编程错误并不是训练失败的唯一原因......如果您在云中运行您可能会遇到现场实例终止或遇到内部服务器错误。如果您在本地运行可能会发生断电或者您的 GPU 可能会爆炸。如果您已经训练了几天而没有存储中间检查点则损坏可能会非常严重。如果你每小时保存一个检查点那么你最多损失一个小时。TensorFlow 提供了用于存储检查点的实用程序例如keras 模型检查点回调。您需要做的就是通过权衡存储检查点的开销和训练课程中意外故障的成本来决定捕获此类快照的频率。 4.2 接触者追踪 对于我为这一部分选择的标题我向我的 Covid19 同行表示歉意我无法抗拒。我所说的接触者追踪是指跟踪输入训练管道的训练数据的能力。 假设您的训练数据在 tfrecord 文件中分为 100,000 个并且其中一个文件存在格式错误导致程序崩溃或停止。缩小问题文件搜索范围的一种方法是记录输入管道的每个文件。一旦发生崩溃您可以回顾日志以查看最近输入的文件是什么。正如我在之前的文章中提到的我们使用 Amazon SageMaker 管道模式功能进行训练。管道模式的一个相当新的补充是管道模式服务器端日志它记录正​​在输入管道的文件。 记录进入管道的数据可以帮助人们重现错误的能力这将我们引向下一个要点。 4.3 (Ir) 再现性 重现错误的难易程度直接影响解决该错误的难易程度。我们总是希望编写代码以确保可重复性。这在 TensorFlow 程序中并不容易。机器学习应用通常依赖于随机变量的使用。我们随机初始化模型权重随机增加数据随机分片数据进行分布式训练随机应用 dropout在每个 epoch 之前对输入数据进行洗牌然后在创建批次之前再次洗牌使用 tf.dataset.shuffle 。我们可以使用我们记录的伪随机种子来播种所有伪随机操作但请记住可能有许多不同的地方引入了随机化并且跟踪所有这些很容易成为簿记噩梦。我无法告诉你有多少次我以为我已经删除了随机化的所有元素结果却发现我错过了一个。此外还有一些随机进程无法播种。如果您使用多个进程来导入训练数据您可能无法控制数据记录实际输入的顺序例如如果在tf.data.Options         () 中experimental_definistic 设置为 false 。当然您可以在每个样本进入管道时对其进行记录但这会带来很大的开销而且可能令人望而却步。 最重要的是虽然构建可重复的训练程序绝对是可能的但我认为更明智的做法是接受非确定性接受训练的不可重复性并找到克服这种调试限制的方法。 4.4 模块化编程 创建可调试程序的关键技术是以模块化方式构建应用程序。应用于 TensorFlow 训练循环这意味着能够分别测试训练管道的不同子集例如数据集、损失函数、不同模型层和回调。这并不总是容易做到因为一些训练模块例如损失函数非常依赖于其他模块。但还有很大的创作空间。例如只需在应用数据集操作的子集的同时迭代数据集就可以在输入管道上测试不同的函数。可以通过创建仅运行损失函数或回调的应用程序来测试损失函数或回调。人们可以通过用虚拟损失函数替换损失函数来中和损失函数。我喜欢构建具有多个输出点的模型即能够轻松修改模型中的层数以便测试不同层的影响。 在构建程序时您对程序的模块化和可调试性考虑得越多以后遭受的痛苦就越少。 4.5 热切执行 如果您是 TensorFlow 的常规用户您可能遇到过“急切执行模式”、“图形模式”和“tf 函数限定符”等术语。您可能听说过一些有些误导性的说法例如“在急切执行模式下调试是小菜一碟”或“tensorflow 2 在急切执行模式下运行”。你可能和我一样热衷于研究张量流源代码试图理解不同的执行模式结果却崩溃了你的自尊心彻底崩溃了。为了充分了解它是如何工作的我建议您参阅TensorFlow 文档祝您好运。在这里我们将仅提及与调试有关的要点。运行 TensorFlow 训练的最佳方式是在图形模式下运行。图模式是一种符号执行模式这意味着我们无法任意访问图张量。用tf.function限定符包装的函数将在图形模式下运行。当您使用tf.keras.model.fit进行训练时默认情况下训练步骤以图形模式执行。当然无法访问任意图张量使得图模式下的调试变得困难。在急切执行模式下您可以访问任意张量甚至可以使用调试器进行调试前提是将断点放置在 model.call() 函数中的适当位置。当然当你在急切执行模式下运行时你的训练会运行得慢得多。要将模型编程为在急切执行模式下进行训练您需要调用 model.compile ()函数并将 run_eagerly 标志设置为 true。 最重要的是当您训练时以图形模式运行当您调试时以急切执行模式运行。不幸的是某些错误仅在图形模式下重现而不是在急切执行模式下重现的情况并不少见这真是令人遗憾。此外当您在本地环境中进行调试时急切执行很有帮助但在云中则不然。它通常在调试巨大的错误时不是很有用......除非您首先找到一种在本地环境中重现错误的方法更多内容请参见下文。 五、TensorFlow 日志记录和调试实用程序 尝试充分利用 TensorFlow 记录器。当您调试问题时将记录器设置为信息最丰富的级别。 tf.debugging模块提供了一系列断言实用程序以及数字检查功能。特别是tf.debugging.enable_check_numerics实用程序有助于查明有问题的函数。 tf.print函数可以打印任意图张量它是一个附加实用程序我发现它对于调试非常有用。 最后但并非最不重要的一点是添加您自己的打印日志在代码的非图形部分以便更好地了解程序发生故障的位置。 5.1 解读 TensorFlow 错误消息 有时您会很幸运地收到 TensorFlow 错误消息。不幸的是并不总是立即清楚如何使用它们。我经常收到同事发来的电子邮件其中包含神秘的 TensorFlow 消息寻求帮助。当我看到消息时例如 tensorflow.python.framework.errors_impl.InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] [5,229376] vs. shape[2] [3,1] 或者 node DatasetToGraphV2 (defined at main.py:152) (1) Failed precondition: Failed to serialize the input pipeline graph: Conversion to GraphDef is not supported. 或者 ValueError: slice index -1 of dimension 0 out of bounds. for loss/strided_slice (op: StridedSlice) with input shapes: [0], [1], [1], [1] and with computed input tensors: input[1] -1, input[2] 0, input[3] 1. 我问自己稍作修改以使帖子适合儿童“我应该对此做什么” 或者“为什么友善热爱的 TensorFlow 工程师不能给我更多的东西来使用”。但我很快让自己平静下来有时需要酒精饮料的帮助然后说“查姆别这么被宠坏了。回去工作吧庆幸你收到了任何消息。” 您应该做的第一件事是尝试在急切执行模式下和/或使用调试器重现错误。不幸的是如上所述这并不总是有帮助。 毫无疑问上述消息并没有多大帮助。但不要绝望。有时在一些调查工作的帮助下您会找到可能引导您走向正确方向的线索。检查调用堆栈以查看它是否提供任何提示。如果消息包含形状大小请尝试将它们与图形中可能具有相同形状的张量进行匹配。当然还要上网搜索一下看看其他人是否也遇到过类似的问题以及在什么场景下。不要绝望。 5.2 在本地环境中运行 当然在本地环境中进行调试比在远程计算机或云中进行调试更容易。当您第一次创建模型时尤其如此。您的目标应该是在开始远程培训之前解决本地环境中尽可能多的问题。否则您可能会浪费大量时间和金钱。 为了提高可重复性您应该尝试使本地环境与远程环境尽可能相似。如果您在远程环境中使用 docker 镜像或虚拟环境请尝试在本地使用相同的镜像。如果您的远程训练在 Amazon SageMaker 上进行您可以拉取所使用的 docker 镜像。 当然远程培训环境的某些要素可能无法在本地重现。例如您可能遇到了仅在使用Amazon SageMaker 管道模式时才会重现的错误该模式目前仅在云中运行时受支持。在这种情况下您可以考虑使用其他方法从 s3 访问数据。 我希望我可以告诉您这里描述的技术将解决您的所有问题。但可惜的是事实并非如此。在下一节中我们将回到上面说明的怪物错误场景并介绍最后一项调试技术。 六、使用 TensorFlow 自定义训练循环进行调试 在我们上面描述的场景中经过几天的训练模型的特定状态和特定的训练批次样本的组合突然导致损失变为 NaN。 让我们评估一下如何使用上面的调试技术来调试这个问题。 如果我们仔细跟踪用于所有随机操作的种子并且不存在不受控制的非确定性事件理论上我们可以通过从头开始训练来重现该错误......但这需要几天的时间。在本地环境或急切执行模式中进行复制可能需要数周时间。我们可以从最近的检查点恢复但只有当我们可以从完全相同的样本和所有伪随机生成器的完全相同的状态恢复时我们才能够重现相同的模型状态和批次样本。添加tf.prints会有帮助但会带来巨大的开销添加tf.debugging.enable_check_numerics对于查明失败的函数非常有帮助。如果函数中存在明显的错误这可能就足够了。但它并不能让我们重现该错误。 理想情况下我们能够在损失严重之前捕获输入和模型状态。然后我们可以在受控本地环境中、在急切执行模式下并使用调试器重现该问题。 问题是我们不知道问题即将发生直到它真正发生。当损失被报告为 NaN 时模型已经使用 NaN 权重进行了更新并且导致错误的批次样本已经被迭代。 我想提出的解决方案是自定义训练循环以便我们在每一步记录当前样本并且仅在梯度有效时更新模型权重。如果梯度无效我们将停止训练并转储最后一批样本以及当前模型快照。这可以转移到您的本地环境您可以在其中加载模型并以急切执行模式输入捕获的数据样本以便重现并解决错误。 我们稍后将讨论代码但首先简单介绍一下使用自定义训练循环的优缺点。 6.1 自定义训练循环与高级 API 关于是否编写自定义训练循环或依赖高级 API例如tf.keras.model.fit ()TensorFlow 用户之间存在着一个由来已久的争议。 定制训练循环的支持者预示着能够逐行控制训练的执行方式以及发挥创造力的自由。高级 API 的支持者称赞它提供的许多便利最引人注目的是内置回调实用程序和分布式策略支持。使用高级 API 还可以确保您使用无错误且高度优化的训练循环实现。 从版本 2.2 开始TensorFlow 引入了重写tf.keras.model类的train_step和make_train_function例程的功能。这使得人们能够引入某种程度的定制同时继续享受 model.fit() 的便利。我们将演示如何重写这些函数使我们能够捕获有问题的示例输入和模型状态以进行本地调试。 6.2 自定义捕获循环 在下面的代码块中我们使用 train_step 和 make_train_functions 例程的自定义实现来扩展 tf.keras.models.Model 对象。为了充分理解该实现我建议您将其与github 中例程的默认实现进行比较。您会注意到我删除了与指标计算和策略支持相关的所有逻辑以使代码更具可读性。需要注意的主要变化是 在将梯度应用于模型权重之前我们测试梯度是否为 NaN。仅当 NaN 不出现时梯度才会应用于权重。否则将向训练循环发送遇到错误的信号。信号的一个示例可以是将损耗设置为预定值例如零或 NaN。训练循环存储每一步的数据特征和标签x 和 y。请注意为了做到这一点我们已将数据集遍历next(iterator) 调用移至 tf.function 范围之外。该类有一个布尔“崩溃”标志用于向主函数发出是否遇到错误的信号。 class CustomKerasModel(tf.keras.models.Model):def __init__(self, **kwargs):super(CustomKerasModel, self).__init__(**kwargs)# boolean flag that will signal to main function that # an error was encounteredself.crash Falsetf.functiondef train_step(self, data):x, y datawith tf.GradientTape() as tape:y_pred self(x, trainingTrue) # Forward pass# Compute the loss value# (the loss function is configured in compile())loss self.compiled_loss(y, y_pred, regularization_lossesself.losses)# Compute gradientstrainable_vars self.trainable_variablesgradients tape.gradient(loss, trainable_vars)# concatenate the gradients into a single tensor for testingconcat_grads tf.concat([tf.reshape(g,[-1]) for g in gradients],0)# In this example, we test for NaNs, # but we can include other testsif tf.reduce_any(tf.math.is_nan(concat_grads)):# if any of the gradients are NaN, send a signal to the # outer loop and halt the training. We choose to signal# to the outer loop by setting the loss to 0.return {loss: 0.}else:# Update weightsself.optimizer.apply_gradients(zip(gradients, trainable_vars))return {loss: loss}def make_train_function(self):if self.train_function is not None:return self.train_functiondef train_function(iterator):data next(iterator)# records the current sampleself.x, self.y datares self.train_step(data)if res[loss] 0.:self.crash Trueraise Exception()return resself.train_function train_functionreturn self.train_functionif __name__ __main__:# train_ds # inputs # outputs # optimizer # loss # epochs # steps_per_epoch model CustomKerasModel(inputsinputs, outputsoutputs)opt tf.keras.optimizers.Adadelta(1.0)model.compile(lossloss, optimizeroptimizer)try:model.fit(train_ds, epochsepochs, steps_per_epochsteps_per_epoch)except Exception as e:# check for signalif model.crash:model.save_weights(model_weights.ckpt)# pickle dump model.x and model.yfeatures_dict {}for n, v in model.x.items():features_dict[n] v.numpy()with open(features.pkl,wb) as f:pickle.dump(features_dict,f)labels_dict {}for n, v in model.y.items():labels_dict[n] v.numpy()with open(labels.pkl, wb) as f:pickle.dump(labels_dict, f)raise e 值得注意的是这种技术的训练运行时成本很小这是因为以急切执行模式而不是图形模式从数据集中读取数据。天下没有免费的午餐。确切的成本取决于模型的大小模型越大这种变化就越小。您应该在自己的模型上评估此技术的开销然后决定是否以及如何使用它。 七、概括 只要我们人类参与人工智能应用程序的开发编程错误的普遍存在就一定会发生。设计代码时考虑到可调试性并获取解决错误的工具和技术可能会避免一些严重的折磨。 参考地址 哈伊姆·兰德

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仿网站教程关键词搜索排行榜

Java 条件语句 - if…else Java 中的条件语句允许程序根据条件的不同执行不同的代码块。 一个 if 语句包含一个布尔表达式和一条或多条语句。 语法 if 语句的语法如下: if(布尔表达式) {//如果布尔表达式为true将执行的语句 }如果布尔表达式的值为 true&#x…

网站集约化建设工作总结郑州男科医院怎么样啊

随着计算机技术的不断发展,企业的办公系统得到了很大提升,但是随之而来的网络安全威胁也不断增加,勒索病毒的攻击事件时有发生。近期,我们收到某地连锁超市的求助,企业的计算机服务器遭到了360后缀勒索病毒攻击&#x…

怎么做投票网站什么网站可以免费做视频的软件

在 C 中&#xff0c;可以使用 std::map 统计值出现次数为 2 的键。具体步骤如下&#xff1a; 遍历 std::map&#xff0c;找出所有值为 2 的键。使用条件语句检查每个值&#xff0c;符合条件时记录对应键。 #include <iostream> #include <map> #include <vect…

网站开发公对公转账合同模板自己在网站开发的客户怎么联系

2019独角兽企业重金招聘Python工程师标准>>> lrzsz linux与windows互传 # 前提是使用 xshell 或者 securecrt 这两个远程软件&#xff0c;putty不支持 yum install -y lrzsz //安装文件包 linux向windows 传文件使用 &#xff1a; sz 文件名 回…

在手机制作网站90设计官方网站

目录 前言 项目规划&#xff08;第二周&#xff09; 具体实现 用户大类 AccountOperations接口 UserOperations接口 Operations类&#xff08;实现类&#xff09; Account类 User类 Area类 &#xff08;父类&#xff09; 货币大类 Money类&#xff08;抽象类&…

泰州网站建设方案优化安徽建设厅网站考勤

数据库是什么 数据库是一种用来存储数据的仓库&#xff0c;是一种高效存储和处理数据的介质&#xff08;载体&#xff09;。我们通常口中所说的数据库指的是数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;是一种用于方便管理数据库的软件。 数据库的分类 根据存储…

网站设计知名企业剑三做月饼活动网站

是cocoaChina网站上下载的知识点整理&#xff0c;共669个知识点&#xff0c;我花了点时间给文件全部做了重命名&#xff0c;这样用来查阅或者选择性的学习会有些帮助。 文件放在115网盘&#xff0c;下载地址&#xff1a;http://115.com/file/bhkqjlx2#cocoaChina整理知识点.rar…

网站点击量在哪里看网站推广方法有哪些

目录 stack类介绍 stack类定义 stack类常见构造函数 stack数据操作 empty()函数 size()函数 top()函数 push()函数 pop()函数 swap()函数 stack类介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端…

做特价网站百度云网站建设视频教程

10.1 文件I/O操作概述在Linux系统中&#xff0c;文件I/O操作可以分为两类&#xff0c;一类是基于文件描述符的I/O操作&#xff0c;另一类是基于数据流的I/O操作。10.1.1 文件描述符简介在文件操作一章中&#xff0c;也经常提到文件描述符这个概念。所谓文件描述符&#xff0c;就…

济南网站建设制作设计北京引流推广公司

为什么80%的码农都做不了架构师&#xff1f;>>> 1、图形简介 与html5不同&#xff0c;Raphael提供了以下基本图形&#xff1a;矩形、圆形、椭圆形&#xff08;html5只有矩形&#xff09;。 Paper.rect(x,y,width,height,r)&#xff1a;绘制矩形&#xff1b; 参…

海宁市建设局官方网站6APP编辑WordPress

前言 在说到对图片资源进行优化时&#xff0c;那就不得不提到图片预加载和图片懒加载&#xff0c;可能很多朋友都了解这两者&#xff0c;但是一直没有很清晰的概念&#xff0c;以及什么时候用&#xff0c;用在什么场景下&#xff0c;今天就来详细的了解一下吧&#xff01; 图…

网站建网站建设做水利网站需要多少钱

一、前言 K8S经过多年的发展&#xff0c;构建了云原生的基石&#xff0c;成为了云原生时代的统治者。我将用三个博客系列全面&#xff0c;循序渐进的介绍K8S相关知识。 初级入门系列&#xff0c;主要针对K8S初学者&#xff0c;以及希望对K8S有所了解的研发人员&#xff0c;重点…

怎么做汽车网站php和什么语言做网站

最近富文本编辑器jodit终于更新发布到了4.0版本&#xff0c;加入了css变量、有更好的typescript支持&#xff0c;截止发文时的版本是&#xff1a;4.0.5&#xff0c;看到有了新版本于是便想着将本地项目中的jodit版本也进行升级&#xff0c;琢磨着再丰富和添加一些功能&#xff…

建设六马路小学 网站网站集约化建设的好处

1.概要 初步搭建了Layout界面的布局&#xff0c;其中包括左侧导航栏及其路由功能&#xff0c;和右侧头、体、脚部分的大致排版。最后在头部分中的昵称与头像替换成动态数据。 2.Layout主页布局 文件地址&#xff1a;src\views\Layout.vue 2.1 script行为模块 从elementUI中…

建站排行榜有哪些站内推广的方式

文章目录基本介绍入门步骤执行原理Servlet 生命周期线程安全问题解决方式Servlet 注解配置Servlet 继承与实现体系基本介绍 servlet&#xff0c;server applet&#xff0c;服务器端小程序 servlet 是一个接口&#xff0c;定义了 Java 类被浏览器访问&#xff08;tomcat 识别&…

建立一个网站需要多少钱?网站网络营销外包

uni-app 微信小程序调试不更新问题解决指南 在使用 uni-app 开发微信小程序时&#xff0c;可能会遇到代码修改后无法更新或者不生效的问题。这种现象常见于调试阶段&#xff0c;通常与缓存、编译或代码错误有关。 本文将详细分析调试过程中常见的“不更新”问题&#xff0c;并…

dede能建立手机网站吗计算机做网站开题报告

目录: SpringMVC 的 “整合支持” ( 引入"Web依赖启动器"&#xff0c;几乎可以在无任何额外的配置的情况下进行"Web开发")1.SpringMVC "自动配置" 介绍 ( 引入Web依赖启动器"后&#xff0c;SpringBoot会自动进行一些“自动配置”&#xff0…

专业做面膜的网站在线玩网页游戏h5网站大全

光猫就是“光modem”&#xff0c;是指将光以太信号转换成其它协议信号的收发设备&#xff0c;也是起着调制解调的作用。光猫也称为单端口光端机&#xff0c;该设备作为本地网的中继传输设备&#xff0c;适用于基站的光纤终端传输设备以及租用线路设备。而对于多口的光端机一般会…

长沙微网站开发公司网站域名注册流程

一、实验目的 &#xff08;1&#xff09;了解图像增强的目的及意义&#xff0c;加深对图像增强的感性认识&#xff0c;巩固所学的图像增强的理论知识和相关算法。 &#xff08;2&#xff09;熟练掌握低通、高通、带通、同态滤波器的使用方法&#xff0c;明确不同性质的滤波器…

怎样建设自已的网站英文网站收录提交

const 是 C 语言中的一个关键字&#xff0c;它表示一个对象或变量是常量&#xff0c;即在其生命周期内不可更改。在 C 语言中&#xff0c;const 有多种用法&#xff0c;可以提高代码的可读性和安全性。这里列举了一些关于 const 的常见用法&#xff1a; 声明常量变量&#xff…