Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在机器学习中有不可训练的参数可以吗?_Python_Machine Learning_Keras_Hyperparameters - Fatal编程技术网

Python 在机器学习中有不可训练的参数可以吗?

Python 在机器学习中有不可训练的参数可以吗?,python,machine-learning,keras,hyperparameters,Python,Machine Learning,Keras,Hyperparameters,在建立机器学习模型时,是否可以使用不可训练的参数?或者这会在模型中产生错误吗?我不清楚什么是不可训练的参数,以及如何基于此修正模型。通常,不可训练的参数并不意味着某些权重,您可以为这些权重分配随机或预定义的值(因为它们取决于其他权重值,所以无法知道正确的值) 它意味着一些您事先做出的架构决策。例如,在神经网络中,这些参数是层的数量和每层的节点数量。这些可以通过有根据的猜测来决定,或者通常通过反复试验(交叉验证)来决定 拥有这样的不可训练参数不仅是可以的,而且对于大多数训练算法来说是不可避免的。编

在建立机器学习模型时,是否可以使用不可训练的参数?或者这会在模型中产生错误吗?我不清楚什么是不可训练的参数,以及如何基于此修正模型。

通常,不可训练的参数并不意味着某些权重,您可以为这些权重分配随机或预定义的值(因为它们取决于其他权重值,所以无法知道正确的值)

它意味着一些您事先做出的架构决策。例如,在神经网络中,这些参数是层的数量和每层的节点数量。这些可以通过有根据的猜测来决定,或者通常通过反复试验(交叉验证)来决定

拥有这样的不可训练参数不仅是可以的,而且对于大多数训练算法来说是不可避免的。

编辑:正如评论中提到的,问题可能是指KERA中的不可训练参数,而不是一般的不可训练参数(超参数)

KERA中的不可培训参数如中所述

…模型的不可训练参数是指您在训练期间不会更新和优化的参数,并且必须在 先验的,或作为输入传递的

此类参数的示例如下:

  • 隐藏层的数量
  • 每个隐藏层上的节点
  • 每个层上的节点
    及其他
  • 这些参数是“不可训练的”,因为您无法优化其性能 重视您的培训数据

    回答您的问题:

    有不可培训的参数可以吗

    是的,如果您正在构建NN或其他机器学习模型,这是可以的,事实上是不可避免的

    这会在模型中产生错误吗

    默认情况下不会产生错误,它决定了神经网络的结构。

    但有些体系结构比其他体系结构更适合您的数据和任务

    因此,如果您选择次优的不可训练参数,您可以而且将不适合您的数据

    优化不可训练的参数是另一个非常广泛的话题


    通用机器学习理论的答案:

    非训练参数(不专门用于KERA)称为超参数

    他们的目标是使算法适应您的特定要求

    例如如果你正在训练一个简单的
    逻辑回归
    ,你有一个参数
    C
    ,它代表
    正则化
    ,它基本上影响你将要做的事情 “惩罚”是错误答案的算法

    您可能希望很难对算法进行惩罚,以推广更多(但您也可以
    欠拟合
    ),或者您可能不希望对错误进行高惩罚(这也可能导致
    过拟合


    这是你无法从数据中学到的东西-这是你可以根据自己的特殊需要进行调整的东西。

    我不明白为什么它不好。你已经在神经网络中有了一个偏差单元,而不是训练它。我想你们也可以有其他的,只是把它排除在训练之外。@Chrispresso-bias单位是经过训练的……你们不训练它是什么意思?如果你们特别指“NN”或“多层NN”,不要说“机器学习”。如果您指的是NN,您是指单个图层尺寸、连通性(全部/部分)、激活功能吗?或者梯度增强树中的超参数,比如学习率,正则化?回归或随机森林中的固定效应或混合效应建模?还是别的什么?还是所有这些?(我将该超参数标记为猜测,但如果不适用,请编辑该超参数)该答案忽略了模型中某些层可能被冻结的可能性,就像迁移学习中的情况一样。根据定义,这些层的权重是不可训练的参数。事实上,Keras将向您显示您有多少个参数是可训练的和不可训练的。当Keras输出“不可训练参数”时,它实际上并没有告诉您模型有多少超参数。它指的是那些冻结的图层。@enumaris谢谢你指出这一点!我认为这个问题不是针对Keras和NN的(因为这个问题通常是“在机器学习中”)。但你是对的,值得一提。我将很快更新我的答案,以回应你的评论。是的,我正在字里行间阅读,因为当你做一个model.summary()时,OP标记的Keras和Keras有一个“可训练参数与不可训练参数”输出,所以我觉得这就是OP所问的。@enumaris我编辑了这个问题。如果我在一个新答案中的某个地方错了,请随时纠正我。我想实际上,你所联系的问题的第二个答案(有5张赞成票的那一个),而不是你所指的被接受的答案,是针对我所说的上下文的答案。不过,我还是在字里行间读。完全有可能OP并不是指Keras中的“不可训练的参数”。