Day 27 - Learned Index实作(1)

前面实作初步的Learned Index并进行测试,今天我们要来实作出Learned Index的完全体!!XD
其实不是完全体,也只是模拟拉 XD
Learned Index 的架构可以分为 LIF、RMI、Search Method,但是,Kraska et al.说明LIF为测试框架,并无完整介绍实际架构为何,因此本次模拟实作Learned Index不包括LIF框架。

Learned Index

Learned Index的主要架构围绕着 Recursive Model Index(RMI),叠带式的模型索引架构,但是RMI的架构有几层?每层有几个模型?这是可以自行定义,根据 Kraska et al.测试2层的RMI架构,第一层的Model为1个,可以是0~2层神经网路模型,神经元数量8 or 16最好,第二层的架构则选择简单的线性回归,可以有数个。

首先,我们要建置2层架构Learned Index,第二层的Model数量为自带参数:

class Learned_Index():
    
    def __init__(self, model_num):
        self.RMI = [1, model_num]    # Learned Index RMI架构
        self.index = []              # 储存模型的索引

再来就是建置模型,所谓的建置模型,就是依据我们设定的Learned Index架构来配置我们的模型与其数量:

def build(self):
    for m in RMI:
        if(m==1):

            # 第一层 => 建置 NN Model 8x8
            model = Sequential()
            model.add(Dense(8, input_dim=1, activation="relu"))
            model.add(Dense(8, activation="relu"))
            model.add(Dense(1))

            sgd=keras.optimizers.SGD(lr=0.000001)    # lr:学习率,可调参数
            model.compile(loss="mse", optimizer=sgd, metrics=["mse"])
            index.append(model)
        else:
            # 第二层 => 建置多个简单线性回归
            index.append([])
            for j in range(m):
                model = LinearRegression()
                index[1].append(model)

建置完後,我们就要来训练资料噜~
训练资料有点麻烦,因为必须叠带训练,从第一层的1个Model到第二层的多个Models,除此之外,第一层的Model训练完後,要将资料分配至第二层的各个Model,比较复杂一点,我们明天再来实作出剩余的部分并详细解释!

掰铺~~

https://ithelp.ithome.com.tw/upload/images/20201012/20129198fjrgWbruGz.png


<<:  Feedly 和 Inoreader,用RSS阅读器蒐集实用数位行销blog推荐资讯

>>:  个人回顾:从实体到线上

[Day10 ] NAT Slipstreaming

前言 最近忙到不知道能不能完赛了 QQ 正文 NAT是一种在IP Packet通过Router或防火...

【13】模型套不套用资料增强 (Data Augmentation) 的比较实验

Colab连结 资料增强(Data Augmentation),是一个当今天资料集样本不多时,透过调...

[ Day 12 ] - <script> 标签放哪里~

上一篇有提到,一个浏览器在解析网页时,会将 HTML 内容由上至下一行一行解析成 DOM 的节点, ...

Day 23-Unit Test 应用於 DateTime-2 (情境及应用-3)

Unit Test 应用於 DateTime-前言-2 今天文章的内容是参考於 C# - how t...

在 Windows 10 上安装 Visual Studio Code EP3

前言 写程序,设定好 IDE,可以增加自己的效率,今天来纪录一下安装 Visual Studio C...