Man*_*kla 1 machine-learning deep-learning keras automl auto-keras
我了解 AutoKeras ImageClassifier 的作用(https://autokeras.com/image_classifier/)
clf = ImageClassifier(verbose=True, augment=False)
clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
y = clf.evaluate(x_test, y_test)
Run Code Online (Sandbox Code Playgroud)
但我无法理解 AutoModel 类(https://autokeras.com/auto_model/)的作用,或者它与 ImageClassifier 有什么不同
autokeras.auto_model.AutoModel(
inputs,
outputs,
name="auto_model",
max_trials=100,
directory=None,
objective="val_loss",
tuner="greedy",
seed=None)
Run Code Online (Sandbox Code Playgroud)
参数输入和输出的文档说
- 输入: HyperNode 实例的列表。AutoModel 的输入节点。
- 输出: HyperHead 实例的列表。AutoModel 的输出头。
什么是超级节点实例?
同样,什么是 GraphAutoModel 类?(https://autokeras.com/graph_auto_model/)
autokeras.auto_model.GraphAutoModel(
inputs,
outputs,
name="graph_auto_model",
max_trials=100,
directory=None,
objective="val_loss",
tuner="greedy",
seed=None)
Run Code Online (Sandbox Code Playgroud)
文档阅读
由超级块图定义的超级模型。GraphAutoModel 是 HyperModel 的子类。除了 HyperModel 属性之外,它还有一个调整器来调整 HyperModel。用户可以以与 Keras 模型类似的方式使用它,因为它也具有 fit() 和 Predict() 方法。
什么是超级块?如果 Image Classifier 自动进行 HyperParameter Tuning,那 GraphAutoModel 有什么用呢?
为了更好地理解 AutoModel 和 GraphAutoModel,可以链接到任何文档/资源。
最近与autokeras合作,我可以分享我的一点知识。
Task API在执行图像分类/回归、文本分类/回归等
经典任务时,您可以使用 autokeras 提供的最简单的 API,称为:、、、、、Task API...在这种情况下,您有一个输入(图像或文本)或表格数据,...)和一个输出(分类、回归)。ImageClassifierImageRegressorTextClassifierTextRegressor
Automodel然而,当您遇到需要多输入/输出
架构的任务时,您无法直接使用任务 API,这就是Automodel. 您可以检查文档中I/O API提供的示例,其中有两个输入(图像和结构化数据)和两个输出(分类和回归)
GraphAutoModel
GraphAutomodel 的工作方式类似于 keras 功能 API。它组装不同的块(卷积、LSTM、GRU...)并使用该块创建模型,然后它将根据您提供的架构寻找最佳的超参数。假设我想使用时间序列作为输入数据来执行二元分类任务。首先让我们生成一个玩具数据集:
import numpy as np
import autokeras as ak
x = np.random.randn(100, 7, 3)
y = np.random.choice([0, 1], size=100, p=[0.5, 0.5])
Run Code Online (Sandbox Code Playgroud)
这里x是100个样本的时间序列,每个样本是长度为7、特征维度为3的序列。对应的目标变量y是二进制的(0, 1)。使用 GraphAutomodel,我可以使用所谓的HyperBlocks. 有很多模块:Conv、RNN、Dense……在此处查看完整列表。就我而言,我想使用 RNN 块来创建模型,因为我有时间序列数据:
input_layer = ak.Input()
rnn_layer = ak.RNNBlock(layer_type="lstm")(input_layer)
dense_layer = ak.DenseBlock()(rnn_layer)
output_layer = ak.ClassificationHead(num_classes=2)(dense_layer)
automodel = ak.GraphAutoModel(input_layer, output_layer, max_trials=2, seed=123)
automodel.fit(x, y, validation_split=0.2, epochs=2, batch_size=32)
Run Code Online (Sandbox Code Playgroud)
(如果您不熟悉上述定义模型的风格,那么您应该查看 keras 功能 API 文档)。
因此,在这个示例中,我可以更灵活地创建我想使用的架构骨架:LSTM 块,后跟密集层,然后是分类层,但是我没有指定任何超参数(lstm 层数、数量)密集层的数量、lstm 层的大小、密集层的大小、激活函数、dropout、batchnorm,...),Autokeras 将根据我提供的架构(骨架)自动进行超参数调整。
| 归档时间: |
|
| 查看次数: |
1509 次 |
| 最近记录: |