Scikit-学习货物邪教

2021-04-24 07:02:37

设计机器学习框架的人喜欢Scikit-Learn估算器界面。我们可以告诉他们喜欢它,因为他们一直试图模仿它。

但是,爱情和理解不一样 - 这些设计师似乎都没有明白Sklearn估计界面是什么。这个失败是

具体而言,没有人似乎可以让Sklearn估计器界面是......等待它...一个接口。

也就是说:它指定对象彼此通信的标准方法。它没有指定对象本身的原因。

这是整个点。任何东西都可以是Sklearn估计器,只要它符合Sklearn为估算器铺设的规则。

除此之外,它可以包含任何东西,做任何事情。写一个全新的Sklearn估计人非常容易,没有人想到的是:Docs告诉你预期估算器的表现如何,只要你的对象播放那些简单的规则,它就被允许加入游戏。 (更重要的是,您可以免费提供大量规则,仅通过继承基本类和Mixins Sklearn提供。)

简单的规则包括具有称为“适合”的方法,该方法需要一个或两个输入,并应该设置一些内部状态。对于预测器,最着名类型的估算器,您需要一种名为“预测”的方法。这将在一瞬间。

(Sidenote:Sklearn估计器界面真的不是一个界面的一个很好的例子,因为它实际上是关心内部的。它检查属性名称并要求他们遵循自己的规则,并且它没有完全明确的预期估算者可以遵守用泡菜序列化。

然而,这些要求仍然是界面 - y在意义上,它们只限制了沿一些明确的尺寸的估计器,留下了其他一切。任何由规则扮演的东西仍然可以加入游戏,并播放它以及内置于Sklearn的“官方”估算器。)

界面很棒。它们是现代软件的基础之一。你认为喜欢界面的人会学到课程“界面很大,我们应该使用它们。”

这是Keras,Tensorflow和Sagemaker的开发人员从那种心爱的估计界面学习:

事实上,可能 - 一个人不能统治它 - 数据科学家不知道如何做任何事情,而不是输入“fit”和“预测”的单词。

“易于使用”ML库是您可以通过打字“适合”和“预测”来实现工作的“易用”库。这基本上是可用性的;其余的是细节。

这种奇怪的疾病的第一个伤亡 - 事实上,也许患者归零,所有其余的Sprang - 是克里斯的艺术家弗朗索斯·克兰特。

(请注意,第一次推文中的索赔是假的:Keras模型从未有过有效的Sklearn估计器,因为它们不遵循参数命名规则。在许多版本的Keras中,它们也不挑选。实际上,Tweet本身就是关于包装层意味着添加此缺少兼容性,因此我不知道自2015年以来兼容性“应该是指意味着什么。)

Keras中的“模型”对象看起来像Sklearn估计一样。他们有“适合”和“预测”。这些方法在Sklearn中做出了大致相同的事情。

但没有“Keras估计界面。”只有一个已知的Keras Fit /预测Gizmo的有效物种,即“模型”,内置于Keras。

滚动自己的东西的唯一方法表现类似于“模型”是给子类“模型”。使用Sklearn,继承VasiaVestimator是有用的,但这只是帮助您遵循一些规则,您可以自己轻松跟随它们。没有规则“模型”是关注的。它不遵守法律,这是法律。

“我手头是一个sklearn估计。这意味着什么?”刚阅读本页:这实际上是要知道的。

“我手头是一个凯拉斯模型。这意味着什么?”阅读此迷宫的代码,并阅读IT导入的一切。这就是模特的所作所为。是的,您必须阅读代码 - 文档告诉您如何子类模型,而不是模型。

凯拉斯作为第三方图书馆开始,但在某些时候被纳入Tensorflow,被推动为在TF中开发神经网络的标准方法。

这是不幸的,因为凯拉斯对象是复杂的野兽,没有人真正知道如何完全将一个人分解为Tensorflow(或任何东西)。没有什么可以成为一个keras对象,这些对象没有从头开始构建。

因此,阅读任何Tensorflow Doc,您可能会遇到一个奇怪的分裂:“如果您正在使用keras,那么do x ...”......否则,do y。“必须有一个通用的路径,因为你可能不使用keras,如果你不是,你就会陷入困境。因此,一切都完成了两次,通常是不同的方式。

这不是故事的结尾。不,在一些稍后的日期,Tensorflow决定一个适合/预测是不够的。 (“更适合/预测-Y-y图书馆,它更具可用性,”适应MEME“)

他妈的是一个估计器(纹身流风格)?好吧,它还有另一个具有“适合”和“预测”的Gizmo。

这不是一个角落模型,但比凯拉斯模型更通用,并且确实更接近Sklearn的精神。它的“适合”和“预测”可以包装几乎任意的Tensorflow代码。

我认为这可能是他们首先创建它的原因之一。但他们没有摆脱克拉斯的适合/预测,他们只是混乱地有两个一次 - 并且实际上是凯拉斯Gizmo都有令人诗令的估计,并从而估计。 (与所有可靠的Tensorflow功能一样,估算器已被正式弃用并在某些特定的遗留情况下被正式弃用并在某些特定的遗留案件之外进行推荐;我们说话时,对估计者的参考慢慢地擦除官方指南。)

估算器已经(有?)其自己的复杂的助手生态系统,其中大多数只有“内部”,并在代码中记录,就像凯拉斯一样,但又一遍。 (在开始这篇文章之前,我试图将我的头包裹在一个被称为“监控次数”的人。)

详细说明用户不能做任何事情,但类型“适合”和“预测”的主题,估计人员致力于使如此可怕的任务作为“多个GPU培训”,“云TPUS培训”甚至“部署到云服务“呼吁”适合“或”预测“。

有趣的是,估算者是采取这些行动一段时间的主要支持方法,肯定是最不痛苦的。因此,您想要分发的任何代码都必须以“适合”或“预测”包裹,以便让估算器成为调用它的东西。

也许(?)因为DEVS已经注意到这是多么不必要的是,Tensorflow现在试图挖掘估计器,支持“策略”,是用于分配任意TF代码的更通用包装器。

在此之前,估算者和策略彼此靠近尴尬,就像估算者和凯拉斯一样。实际上,估计师似乎比策略更可靠,并继续看到像网格杂迹这样的官方分类,可能是因为人们知道它实际上是有效的,并且知道如何在现实生活中使用它。

当我写下我的Tensorflow咆哮时,我从2019年12月回到2019年12月。我很高兴地在4月2021年4月仍然存在,据我所记得,关于许多“实验”和“有限的”细胞。

(请注意,此表的行包括KERAS,模型API和估计器,模型和分布API,并将其与与策略兼容性的分发API进行比较。

我花了无数的时间试图了解这种废话。人们可能会发现自己问“可用性”已经消失的地方,并且应该首先出现在哪里。

这是一个“机器学习平台”,在实践中,这意味着它在EC2™上运行Docker容器周围的另一个复杂包装。

与任何AWS产品一样,Sagemaker有API端点,并且在Python中,您可以通过通用客户端Boto3调用这些。然而,为了服务“高级”“可用性”需求,还有一个专用的Python SDK。

估算器(Sagemaker Flavor)将估计器(TensoRFlow Flavor)的云计算焦点占据其逻辑结论。

Sagemaker“估算器”与拟合或预测任何东西没有任何关系。 SDK不会在此处为您提供任何机器学习代码。附加到这些单词的唯一缺口是“适合”预计会修改状态(因此它在完成时从云下载文物),而“预测”应该是无状态的。

相反,这里“适合”和“预测”是推动和运行任意Docker图像的包装器。 “fit”用一个名为“火车”的入口点运行它,而“预测”则用一个名为“服务”的“预测”运行它。

有一些周围的助手味道,但它们是类似的通用。有一些名为“HyperParameters”的东西,它实际上意味着“json dict,在其运行之前将其作为文件注入的字符串的值,”以及称为“培训数据”的东西,其实际上意味着“容器可以读取的S3路径”。

不记得实际上“适合”和“预测”的情况下,不可能了解“内置”估计的情况下发生了什么是谎话,而且您只是使用Docker。

这是界面最远的东西! 任何可以制作自己的估算者(杰匠味)的人也没有理由这样做; 如果您知道如何为ECS / EC2编写Dockerfiles,则可以在不加额外的SDK上进行替换。 实际上,估算者(Sagemaker Foravor)是距离Sklearn原创的人,这很难想象他们的开发人员在写道时清楚地想到了Sklearn。 更有可能,他们试图模仿早期的模仿者。