我了解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)
但是我无法理解AutoModel类(https://autokeras.com/auto_model/(的作用,或者它与图像分类器有何不同
autokeras.auto_model.AutoModel(
inputs,
outputs,
name="auto_model",
max_trials=100,
directory=None,
objective="val_loss",
tuner="greedy",
seed=None)
参数输入和输出的文档说
- 输入:或超节点实例的列表。自动建模的输入节点。
- 输出:HyperHead 实例的列表或 HyperHead 实例。自动模型的输出头。
什么是超级节点实例?
同样,什么是图形自动模型类?(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)
文档阅读
由超块图定义的超模型。GraphAutoModel 是 HyperModel 的一个子类。除了超模型属性之外,它还具有一个调谐器来调整超模型。用户可以以类似于 Keras 模型的方式使用它,因为它也有 fit(( 和 predict(( 方法。
什么是超级块? 如果图像分类器自动执行超参数调整,GraphAutoModel有什么用?
链接到任何文档/资源,以便更好地了解AutoModel和GraphAutoModel。
最近与Autokeras合作,我可以分享我的小知识。
-
Task API
在执行图像分类/回归、文本分类/回归等经典任务时,您可以使用自结提供的最简单的 APITask API
:ImageClassifier
、ImageRegressor
、TextClassifier
、TextRegressor
、...在这种情况下,您有一个输入(图像或文本或表格数据等(和一个输出(分类、回归(。 -
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])
这里 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)
(如果您不熟悉上述定义模型的样式,那么您应该查看 keras 函数式 API 文档(。
因此,在此示例中,我可以更灵活地创建我想要使用的架构框架:LSTM 块后跟一个密集层,后跟一个分类层,但是我没有指定任何超参数,(lstm 层数、密集层数、lstm 层的大小、密集层的大小、激活函数、dropout、 batchnorm,....(,Autokeras 将根据我提供的架构(骨架(自动进行超参数调整。