1、First of All: Read The Fucking Source Code
import autokeras as ak
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 生成数据集
np.random.seed(42)
x = np.random.rand(1000, 10) # 生成1000个样本,每个样本有10个特征
y = x.dot([0.5, -1.5, 2.0, -0.8, 1.2, -0.3, 0.7, -1.1, 0.4, -0.6]) + 3.0 # 生成目标变量
# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=42)
input_node = ak.Input()
output_node = ak.DenseBlock()(input_node) # 数值特征处理层
output_node = ak.RegressionHead()(output_node)
# 初始化AutoModel,指定为回归任务
regressor = ak.AutoModel(
inputs=input_node, # 指定输入节点
outputs=output_node, # 指定输出节点
overwrite=True, # 覆盖之前的搜索结果
max_trials=2 # 最大尝试次数
)
# 训练模型
regressor.fit(x_train, y_train, epochs=10)
# 评估模型
predictions = regressor.predict(x_test)
mse = mean_squared_error(y_test, predictions)
print('Mean Squared Error: {:.2f}'.format(mse))
# 显示最佳模型信息
model = regressor.export_model()
model.summary()
注:以上基于AutoKeras 2.0版本回归测试的例子,特别使用了通用的AutoModel的写法,其1.1版本不支持。
2、代码结构简介
AutoKeras是一个基于Keras的自动机器学习库,它能够自动搜索最优的神经网络架构。上述为一个简单的回归任务示例代码,主要包含以下部分:
- 生成模拟数据集并进行训练/测试集划分
- 定义AutoKeras的输入输出节点
- 配置并训练AutoModel
- 预测并计算均方误差
- 查看最佳模型结构
3、AutoModel输入输出说明
input_node = ak.Input()
output_node = ak.DenseBlock()(input_node) # 数值特征处理层
output_node = ak.RegressionHead()(output_node)
输入部分:
input_node = ak.Input()
创建输入节点- 无需指定输入形状,AutoKeras会自动推断
处理层部分:
DenseBlock()
处理数值特征- 通过函数式API连接:
output_node = ak.DenseBlock()(input_node)
输出部分:
RegressionHead()
指定回归任务- 同样使用函数式API连接
AutoModel配置:
inputs
参数接收输入节点outputs
参数接收输出节点