当前位置: 首页 > news >正文

网站建设 商标直播做ppt的网站

网站建设 商标,直播做ppt的网站,wordpress 企业展示,合肥房地产最新消息政安晨的个人主页#xff1a;政安晨 欢迎 #x1f44d;点赞✍评论⭐收藏 收录专栏: Tensorflow与Keras实战演绎 希望政安晨的博客能够对您有所裨益#xff0c;如有不足之处#xff0c;欢迎在评论区提出指正#xff01; 通过增加容量或提前停止来提高性能。 在深度学习中政安晨 欢迎 点赞✍评论⭐收藏 收录专栏: Tensorflow与Keras实战演绎 希望政安晨的博客能够对您有所裨益如有不足之处欢迎在评论区提出指正 通过增加容量或提前停止来提高性能。 在深度学习中过拟合和欠拟合是两个常见的问题它们可能会影响模型的性能和泛化能力。 过拟合overfitting指的是模型在训练数据上表现良好但在新的未见过的数据上表现较差的现象。过拟合发生的原因通常是模型能够在训练数据上学习到过多的细节和噪声导致模型对训练数据的特点过度拟合。过拟合的表现通常是模型在训练数据上表现很好但在验证集或测试集上表现较差。 欠拟合underfitting指的是模型在训练数据和新的未见过的数据上表现都不理想的现象。欠拟合发生的原因通常是模型不能够充分拟合数据的特征或模型复杂度不够。欠拟合的表现通常是模型在训练数据和新数据上的表现都不够好无法捕捉到数据的复杂性。 解决过拟合和欠拟合的方法有一些共同的基本原则。 首先增加训练数据量可以减少过拟合和欠拟合的可能性因为更多的数据能够提供更多的样本和变化情况有助于模型学习到更好的特征。 其次调整模型的复杂度可以避免过拟合和欠拟合。如果模型过于复杂可以考虑减少模型的参数或使用正则化技术来约束模型的学习能力。如果模型过于简单可以增加模型的层数或参数提高模型的学习能力。此外还可以使用数据增强、丢弃法dropout等技术来减少过拟合。 总之过拟合和欠拟合是深度学习中常见的问题需要根据具体情况采取相应的调整措施来提高模型的性能和泛化能力。 前言 回顾一下以前文章中的示例Keras将会保存训练和验证损失的历史记录这些损失是在训练模型的过程中逐个epoch记录的。 在本文中我们将学习如何解释这些学习曲线并如何利用它们来指导模型的开发。特别是我们将检查学习曲线以寻找欠拟合和过拟合的迹象并讨论一些纠正策略。 解读学习曲线 可能你可以将训练数据中的信息分为两种类型信号和噪声。 信号是可以概括的部分可以帮助我们的模型从新数据中进行预测。 噪声则是只在训练数据中存在的部分噪声是来自现实世界数据的所有随机波动或者是所有不能真正帮助模型进行预测的非相关模式。噪声是看起来有用但实际上并非如此的部分。 通过选择使损失函数最小化的权重或参数来训练模型。然而您可能知道为了准确评估模型的性能我们需要在新的数据集上进行评估即验证数据集。 当我们训练模型时我们会将每个时期的训练集损失绘制成图表。此外我们还会绘制验证数据的图表。这些图表被称为学习曲线。为了有效地训练深度学习模型我们需要能够解读这些学习曲线。 验证损失提供了对未见数据的预期错误的估计。 现在当模型学习到信号或噪声时训练损失会下降。但是只有当模型学习到信号时验证损失才会下降。模型从训练集中学到的噪声不会推广到新数据。因此当模型学习到信号时两条曲线都下降但是当模型学习到噪声时曲线间会出现差距。差距的大小告诉您模型学到了多少噪声。 理想情况下我们希望创建的模型能够学习到所有的信号而不学习到任何噪音。 然而实际上这几乎不可能发生。相反我们要进行一种权衡。 我们可以让模型学习更多的信号但代价是学习到更多的噪音。只要这种权衡对我们有利验证损失就会继续减小。然而在某一点之后这种权衡可能会对我们不利代价超过了收益验证损失开始上升。 这种权衡表明在训练模型时可能出现两个问题信号不足或噪声过多。 欠拟合训练集是指由于模型没有学到足够的信号导致损失值没有降低到最低。 过拟合训练集是指由于模型学到了过多的噪声导致损失值没有降低到最低。 训练深度学习模型的关键是找到二者之间的最佳平衡点。 我们将探讨一些方法既可以在减少噪音的同时提取更多的训练数据信号。 容量 模型的容量是指它能够学习的模式的大小和复杂性。对于神经网络来说这主要取决于它拥有多少个神经元以及它们是如何相连的。如果你的网络似乎无法适应数据你应该尝试增加它的容量。 您可以通过使网络更宽增加现有层的单元数或使网络更深添加更多层来增加网络的容量。更宽的网络更容易学习更多线性关系而更深的网络更喜欢更多非线性关系。哪种方法更好取决于数据集。 model keras.Sequential([layers.Dense(16, activationrelu),layers.Dense(1), ])wider keras.Sequential([layers.Dense(32, activationrelu),layers.Dense(1), ])deeper keras.Sequential([layers.Dense(16, activationrelu),layers.Dense(16, activationrelu),layers.Dense(1), ]) 您将在本文的练习中探讨网络的容量如何影响其性能。 早停止 我们提到当模型过于迫切地学习噪声时在训练过程中验证损失可能会开始增加。为了防止这种情况我们可以在看到验证损失不再下降时简单地停止训练。以这种方式中断训练被称为早停止。 我们保留验证损失最小的模型。 一旦我们检测到验证损失开始再次上升我们可以将权重重置回最小值出现的位置。这样可以确保模型不会继续学习噪音并过度拟合数据。 使用提前停止的训练方法意味着我们不太容易在网络学习信号完成之前过早停止训练。因此除了防止过长训练导致过拟合外提前停止还可以防止训练时间不足导致的欠拟合。只需将训练轮数设置为一个较大的数值超过实际需要的轮数提前停止将处理剩下的部分。 添加早停止 【政安晨】注 早停止是一种在训练机器学习模型时常用的技术。它的目的是在模型在训练数据上达到最佳性能之前就停止训练以防止过拟合。 实现早停止的方法有很多种其中一种常用的方法是通过监控模型在验证集上的性能来决定何时停止训练。通常我们会定义一个指标例如验证集上的损失函数或准确率并设置一个阈值。当模型在连续若干次迭代中都没有达到这个指标时就可以认为模型已经过拟合可以停止训练了。 另一种常用的方法是使用早停止的模型来评估测试数据上的性能。如果模型在测试数据上的性能开始下降那么就可以认为模型已经过拟合并停止训练。 通过添加早停止技术可以避免模型在训练数据上过拟合从而提高模型的泛化能力。注意早停止并不是一种完全可靠的方法因为有时模型在训练数据上的性能可能仍然可以提升但它仍然是一个非常有用的技术可以帮助我们平衡模型的拟合程度和泛化能力。 在Keras中我们通过回调函数来包含早停机制。回调函数是在网络训练过程中想要定期运行的函数。早停回调函数将在每个时期后运行。Keras有许多有用的预定义回调函数但你也可以自己定义。 from tensorflow.keras.callbacks import EarlyStoppingearly_stopping EarlyStopping(min_delta0.001, # minimium amount of change to count as an improvementpatience20, # how many epochs to wait before stoppingrestore_best_weightsTrue, ) 这些参数的意思是“如果在之前的20个迭代中验证损失没有至少改善0.001那么停止训练并保留你找到的最佳模型。” 有时候很难判断验证损失是由于过拟合还是由于随机批次变异导致的上升。这些参数允许我们设置一些容忍度来确定何时停止训练。 正如我们将在我们的示例中看到的那样我们将把这个回调函数与损失函数和优化器一起传递给fit方法。 示例 - 使用提前停止训练模型 【政安晨】注 在机器学习中提前停止是一种常用的训练模型的技术。它的原理是在训练过程中监测模型在验证集上的性能并在性能不再提升时停止训练以防止过拟合。 以下是一个使用提前停止训练模型的示例 准备数据集首先需要准备一个数据集其中包含用于训练和验证的样本。可以使用真实数据集或合成数据集。 构建模型选择一个合适的模型结构并根据数据集的特点构建一个模型。可以选择各种机器学习算法或深度学习模型。 分割数据集将数据集分成训练集和验证集。训练集用于训练模型验证集用于监测模型的性能。 定义停止条件定义一个停止条件例如当验证集上的性能在一定的连续迭代中没有提升时停止训练。 训练模型使用训练集对模型进行训练并在每次迭代后使用验证集评估模型的性能。 检测性能在每次迭代后对模型在验证集上的性能进行检测。如果性能没有提升则记录当前的迭代次数。 停止训练如果模型在一定数量的连续迭代中性能没有提升停止训练。 使用提前停止训练模型的好处是能够避免过拟合并在模型性能达到最佳时停止训练节省时间和计算资源。同时提前停止还可以对模型进行验证并提供模型的性能指标。 让我们继续开发上篇文章中示例中的模型。 政安晨【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】三—— 随机梯度下降https://blog.csdn.net/snowdenkeke/article/details/136903006我们将增加该网络的容量同时添加一个提前停止的回调函数以防止过拟合。 这是数据准备的步骤 import pandas as pd from IPython.display import displayred_wine pd.read_csv(../input/dl-course-data/red-wine.csv)# Create training and validation splits df_train red_wine.sample(frac0.7, random_state0) df_valid red_wine.drop(df_train.index) display(df_train.head(4))# Scale to [0, 1] max_ df_train.max(axis0) min_ df_train.min(axis0) df_train (df_train - min_) / (max_ - min_) df_valid (df_valid - min_) / (max_ - min_)# Split features and target X_train df_train.drop(quality, axis1) X_valid df_valid.drop(quality, axis1) y_train df_train[quality] y_valid df_valid[quality] 现在让我们增加网络的容量。我们将选择一个相当大的网络但依靠回调函数在验证损失开始增加时停止训练。 from tensorflow import keras from tensorflow.keras import layers, callbacksearly_stopping callbacks.EarlyStopping(min_delta0.001, # minimium amount of change to count as an improvementpatience20, # how many epochs to wait before stoppingrestore_best_weightsTrue, )model keras.Sequential([layers.Dense(512, activationrelu, input_shape[11]),layers.Dense(512, activationrelu),layers.Dense(512, activationrelu),layers.Dense(1), ]) model.compile(optimizeradam,lossmae, ) 在定义好回调函数之后将其作为参数添加到fit函数中你可以有多个回调函数所以将其放入一个列表中。在使用early stopping时选择一个较大的epoch数量大于你实际需要的数量。 history model.fit(X_train, y_train,validation_data(X_valid, y_valid),batch_size256,epochs500,callbacks[early_stopping], # put your callbacks in a listverbose0, # turn off training log )history_df pd.DataFrame(history.history) history_df.loc[:, [loss, val_loss]].plot(); print(Minimum validation loss: {}.format(history_df[val_loss].min())) 结果如下Minimum validation loss: 0.09269220381975174 果然Keras在完整的500个epochs之前就停止了训练 练习过拟合与欠拟合 介绍 在这个练习中您将学习如何通过包含早停止回调来提高训练结果以防止过拟合。 # Setup plotting import matplotlib.pyplot as plt plt.style.use(seaborn-whitegrid) # Set Matplotlib defaults plt.rc(figure, autolayoutTrue) plt.rc(axes, labelweightbold, labelsizelarge,titleweightbold, titlesize18, titlepad10) plt.rc(animation, htmlhtml5)# Setup feedback system from learntools.core import binder binder.bind(globals()) from learntools.deep_learning_intro.ex4 import * 首先加载Spotify数据集。你的任务是根据各种音频特征如“节奏”“舞蹈性”和“模式”预测一首歌的流行程度。 import pandas as pd from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import make_column_transformer from sklearn.model_selection import GroupShuffleSplitfrom tensorflow import keras from tensorflow.keras import layers from tensorflow.keras import callbacksspotify pd.read_csv(../input/dl-course-data/spotify.csv)X spotify.copy().dropna() y X.pop(track_popularity) artists X[track_artist]features_num [danceability, energy, key, loudness, mode,speechiness, acousticness, instrumentalness,liveness, valence, tempo, duration_ms] features_cat [playlist_genre]preprocessor make_column_transformer((StandardScaler(), features_num),(OneHotEncoder(), features_cat), )# Well do a grouped split to keep all of an artists songs in one # split or the other. This is to help prevent signal leakage. def group_split(X, y, group, train_size0.75):splitter GroupShuffleSplit(train_sizetrain_size)train, test next(splitter.split(X, y, groupsgroup))return (X.iloc[train], X.iloc[test], y.iloc[train], y.iloc[test])X_train, X_valid, y_train, y_valid group_split(X, y, artists)X_train preprocessor.fit_transform(X_train) X_valid preprocessor.transform(X_valid) y_train y_train / 100 # popularity is on a scale 0-100, so this rescales to 0-1. y_valid y_valid / 100input_shape [X_train.shape[1]] print(Input shape: {}.format(input_shape)) 结果看到 Input shape: [18] 让我们从最简单的网络开始线性模型。这个模型的容量较低。 运行下面的代码不做任何更改训练一个线性模型在 Spotify 数据集上。 model keras.Sequential([layers.Dense(1, input_shapeinput_shape), ]) model.compile(optimizeradam,lossmae, ) history model.fit(X_train, y_train,validation_data(X_valid, y_valid),batch_size512,epochs50,verbose0, # suppress output since well plot the curves ) history_df pd.DataFrame(history.history) history_df.loc[0:, [loss, val_loss]].plot() print(Minimum Validation Loss: {:0.4f}.format(history_df[val_loss].min())); 曲线呈现“曲棍球杆”形状并不罕见就像您在这里所看到的一样。这使得训练的最后阶段很难看清楚所以让我们从第10个周期开始 # Start the plot at epoch 10 history_df.loc[10:, [loss, val_loss]].plot() print(Minimum Validation Loss: {:0.4f}.format(history_df[val_loss].min())); 1. 评估基准线 您可以自己判断一下。你会说这个模型是欠拟合、过拟合还是刚刚好 # View the solution (Run this cell to receive credit!) q_1.check() 现在让我们给我们的网络增加一些能力。我们将添加三个隐藏层每个隐藏层有128个单元。运行下一个单元格来训练网络并查看学习曲线。 model keras.Sequential([layers.Dense(128, activationrelu, input_shapeinput_shape),layers.Dense(64, activationrelu),layers.Dense(1) ]) model.compile(optimizeradam,lossmae, ) history model.fit(X_train, y_train,validation_data(X_valid, y_valid),batch_size512,epochs50, ) history_df pd.DataFrame(history.history) history_df.loc[:, [loss, val_loss]].plot() print(Minimum Validation Loss: {:0.4f}.format(history_df[val_loss].min())); 2. 添加容量 对于这些曲线你如何评估是欠拟合、过拟合还是恰到好处 # View the solution (Run this cell to receive credit!) q_2.check() 3. 定义早停止回调函数 现在定义一个早停回调函数它等待5个epochpatience以至少0.001的验证损失变化min_delta并保留具有最佳损失的权重restore_best_weights。 from tensorflow.keras import callbacks# YOUR CODE HERE: define an early stopping callback early_stopping ____# Check your answer q_3.check() # Lines below will give you a hint or solution code #q_3.hint() #q_3.solution() 现在运行这个单元格以训练模型并获得学习曲线。注意模型.fit中的callbacks参数。 model keras.Sequential([layers.Dense(128, activationrelu, input_shapeinput_shape),layers.Dense(64, activationrelu), layers.Dense(1) ]) model.compile(optimizeradam,lossmae, ) history model.fit(X_train, y_train,validation_data(X_valid, y_valid),batch_size512,epochs50,callbacks[early_stopping] ) history_df pd.DataFrame(history.history) history_df.loc[:, [loss, val_loss]].plot() print(Minimum Validation Loss: {:0.4f}.format(history_df[val_loss].min())); 4. 训练和解释 与没有早停训练相比这是一个改进吗呵呵 # View the solution (Run this cell to receive credit!) q_4.check() 如果喜欢的话可以尝试使用耐心和min_delta进行实验看看可能会有什么不同。
http://www.w-s-a.com/news/504492/

相关文章:

  • 网站建设与管理是干嘛的中国新闻社是什么单位
  • 帮别人做视频剪辑的网站传业做微采商城网站
  • 设计一个网站开发方案宣传片制作企业
  • 新网站收录多少关键词免费一键网站
  • 网页制作与网站建设 在线作业手表网站制作照片
  • 电商网站开发技术与维护重庆建筑工程交易信息网
  • 人和马做的网站线上营销推广方式
  • 青海教育厅门户网站有赞商城
  • 网站建设多语种自动翻译插件wordpress谷歌翻译插件
  • 泰安高级网站建设推广wordpress教程 好看
  • 我自己的网站怎么做关键词优化泰安网站建设dxkjw
  • 平面设计做画册用网站泰州seo平台
  • 申请一个域名后怎么做网站evernote wordpress
  • 网站左侧导航栏设计网站开发后台数据怎么来
  • 临西做网站报价网站建设需要写语句吗
  • 建设网站网站首页购物网站开发代码
  • 淘宝客怎么建立网站网站360优化
  • 安徽建海建设工程有限公司网站网站空间和域名价格
  • 农产品网站建设策划哪里有做枪网站的
  • 更改各网站企业信息怎么做张家港企业网站制作
  • 郑州网站建设咨询银川做网站哪家好
  • 微信网站 微信支付合肥seo排名收费
  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色
  • 大型电商网站开发金融企业网站建设公司
  • 成都营销型网站建设价格化妆品品牌推广方案