利用自编码器对线性模型参数加密

from sklearn.datasets import load_boston

 

dataset = load_boston()

x_data = dataset.data 

y_data = dataset.target

 

from sklearn import linear_model

 

model = linear_model.LinearRegression()

model.fit(x_data, y_data)

 

args = model.coef_



 

import torch

from torch import nn, optim

 

class autoencoder(nn.Module):

    def __init__(self):

        super(autoencoder, self).__init__()

        self.encoder = nn.Sequential(nn.Linear(1, 16),

                                     nn.ReLU(True),

                                     nn.Linear(16, 32),

                                     nn.ReLU(True),

                                     nn.Linear(32, 16),

                                     nn.ReLU(True),

                                     nn.Linear(16, 4))

        self.decoder = nn.Sequential(nn.Linear(4, 16),

                                     nn.ReLU(True),

                                     nn.Linear(16, 32),

                                     nn.ReLU(True),

                                     nn.Linear(32, 16),

                                     nn.ReLU(True),

                                     nn.Linear(16, 1))

    def forward(self, x):

        encode = self.encoder(x)

        decode = self.decoder(encode)

        return encode, decode



 

lr = 1e-4

epoches = 3000

model = autoencoder()

 

criterion = nn.MSELoss()

optimizier = optim.Adam(model.parameters(), lr=lr)

 

X = torch.tensor(args).unsqueeze(0).float().reshape(-1, 1)

 

print(X.shape)

for i in range(epoches):

    _, output = model(X)

    loss = criterion(output, X)

    # backward

    optimizier.zero_grad()

    loss.backward()

    optimizier.step()

    print(loss)


 

print(X.reshape(-1, 1))

ciphertext, output = model(X)

print(output.reshape(-1, 1))




 

# 将权重实数值变为 高纬度向量。

print(ciphertext)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值