NCF 如何通过WebApi实现前后端分离

简介

优惠券免费领取 https://www.fenfaw.cn/

昨天参加了《Best Of Microsoft Build》上海专场 

NCF 模块化 WebApi 系统开发 + 容器化部署实战

的小伙伴们,昨天有些没有记住的,今天我在这里给大家把步骤再详细的一步步阐述一下,如果中间有些环节大家不太清楚的,可以及时找我沟通

下面我们就来说一说昨天谈到的NCF 如何写WebApi

 

步骤

1.拉取NCF仓库WebApi分支

2.修改数据库连接字符串

3.运行Senparc.Web项目,初始化基础数据库

4.登录后台进入模块管理界面

5.安装模块生成器模块

6.安装本地的Xncf Module Template

7.使用模块生成器生成你想生成的任意的模块

8.生成数据库所需要的表

9.进入演示完全分离的前后端及WebApi

 

实施

1.拉取NCF仓库WebApi分支

首先我们得知道NCF的仓库在什么地方,推荐大家Star

NCF仓库地址:https://github.com/NeuCharFramework/NCF

NCF依赖库仓库地址:https://github.com/NeuCharFramework/NcfPackageSources

NCF开发文档仓库地址:https://gitee.com/NeuCharFramework/NcfDocs

找到仓库,使用git工具拉取到本地后,直接使用宇宙第一IDE(Visual Studio)打开项目,如图所示

 

 

 2.修改数据库连接字符串

找到Senparc.Web项目下面的SenparcConfig.config

 

 

 打开文件,修改连接字符串

 

 

 修改完连接字符串以后,就可以直接运行咯,见证奇迹的时候到来了

3.运行Senparc.Web项目,初始化基础数据库

 

 点击立即安装,可以看到出现了登录的页面,保存好这个账号密码,以便后续使用

 

4.登录后台进入模块管理界面

点击登录,并输入账号密码,进入后台管理

5.安装模块生成器模块

 点击模块管理进入

 

 如果在这里未发现模块生成器,则双击Senparc.Web,进入文件编辑,增加XncfBuilder

<PackageReference Include="Senparc.Xncf.XncfBuilder" Version="0.8.127.20-beta1" />

 

 然后重新编译,即可看到模块生成器

6.安装本地的Xncf Module Template

首先检查一下本地是否安装了Xncf Module Template

进入cmd 或 powershell,输入一下命令

dotnet new

看下是否会有图中所示内容

 

 如果有就跳过此步骤,如果没有则执行以下命令

dotnet new --install Senparc.Xncf.XncfBuilder.Template::0.1.19

安装完成后效果如上图所示

7.使用模块生成器生成你想生成的任意的模块

安装模块生成器后,点击开启

 

 

 

 点击执行生成模块

 

 弹出生成需要的条件参数

 

 

 

 执行后,则生成了项目中的

 

 然后把生成的模块及Senparc.Xncf.Swagger模块,加入到Senparc.Web的引用中

在模块管理中,则可以看到2个引入的模块

 

8.生成数据库所需要的表 

安装WorkShop.Xncf.WebApiDemo01模块,并开启,则能看到如下图所示

 

 同时数据库中就已经生成了

9.进入演示完全分离的前后端及WebApi

在Senparc.Web/wwwroot/下面,我放了一个demo的文件夹

如果你的访问首页地址为:https://localhost:44311/

则访问demo的地址为:https://localhost:44311/demo/index.html

 

以上就是昨天演示Demo的所有内容

 

下一篇预告:(NCF WebApi中 Controller的全解析)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NCF是一种基于神经网络的协同过滤推荐模型,它将用户和物品的交互矩阵作为输入,通过神经网络将用户和物品映射到一个低维空间中,并用内积计算两者之间的相关性得分。下面介绍如何使用PyTorch实现NCF推荐模型。 1. 数据预处理 首先,我们需要准备训练数据。通常情况下,训练数据由用户-物品交互矩阵组成,其中每个元素表示用户对某个物品的评分或点击行为。我们可以使用Pandas库读取和处理数据,如下所示: ```python import pandas as pd import numpy as np # 读取数据 data = pd.read_csv('ratings.csv') # 将用户和物品ID映射为连续的整数 user_ids = data['user_id'].unique() user2id = {u: i for i, u in enumerate(user_ids)} item_ids = data['item_id'].unique() item2id = {i: j for j, i in enumerate(item_ids)} data['user_id'] = data['user_id'].apply(lambda x: user2id[x]) data['item_id'] = data['item_id'].apply(lambda x: item2id[x]) # 将数据拆分为训练集、验证集和测试集 train_data = data.iloc[:80000] val_data = data.iloc[80000:90000] test_data = data.iloc[90000:] ``` 2. 定义NCF模型 接下来,我们需要定义NCF模型。NCF模型由三个部分组成:用户嵌入层、物品嵌入层和全连接层。用户和物品嵌入层将用户和物品ID映射为低维向量,全连接层将这些向量拼接起来并通过一系列非线性变换得到最终的相关性得分。代码如下所示: ```python import torch import torch.nn as nn class NCF(nn.Module): def __init__(self, num_users, num_items, hidden_size): super(NCF, self).__init__() self.user_embedding = nn.Embedding(num_users, hidden_size) self.item_embedding = nn.Embedding(num_items, hidden_size) self.fc_layers = nn.Sequential( nn.Linear(hidden_size * 2, 64), nn.ReLU(), nn.Linear(64, 1), nn.Sigmoid() ) def forward(self, user_ids, item_ids): user_vectors = self.user_embedding(user_ids) item_vectors = self.item_embedding(item_ids) vectors = torch.cat([user_vectors, item_vectors], dim=1) scores = self.fc_layers(vectors) return scores ``` 3. 定义训练和评估函数 接下来,我们需要定义训练和评估函数。训练函数将训练数据输入模型,计算损失并根据损失更新模型参数。评估函数将验证集输入模型,计算预测得分并计算评估指标(如准确率、召回率、F1值等)。代码如下所示: ```python def train(model, train_data, val_data, num_epochs, batch_size, lr): criterion = nn.BCELoss() optimizer = torch.optim.Adam(model.parameters(), lr=lr) for epoch in range(num_epochs): model.train() total_loss = 0.0 for i in range(0, len(train_data), batch_size): batch_data = train_data.iloc[i:i+batch_size] user_ids = torch.LongTensor(batch_data['user_id'].values) item_ids = torch.LongTensor(batch_data['item_id'].values) labels = torch.FloatTensor(batch_data['rating'].values) optimizer.zero_grad() outputs = model(user_ids, item_ids) loss = criterion(outputs.squeeze(), labels) loss.backward() optimizer.step() total_loss += loss.item() * len(batch_data) print('Epoch %d, train loss: %.4f' % (epoch+1, total_loss / len(train_data))) evaluate(model, val_data) def evaluate(model, val_data): model.eval() user_ids = torch.LongTensor(val_data['user_id'].values) item_ids = torch.LongTensor(val_data['item_id'].values) labels = val_data['rating'].values with torch.no_grad(): outputs = model(user_ids, item_ids) scores = outputs.squeeze().numpy() predictions = (scores >= 0.5).astype(int) accuracy = np.mean(predictions == labels) print('Accuracy: %.4f' % accuracy) ``` 4. 训练和评估模型 最后,我们可以使用训练和评估函数训练和评估NCF模型。代码如下所示: ```python num_users = len(user_ids) num_items = len(item_ids) hidden_size = 64 model = NCF(num_users, num_items, hidden_size) train(model, train_data, val_data, num_epochs=10, batch_size=256, lr=0.001) evaluate(model, test_data) ``` 运行以上代码,即可训练和评估NCF推荐模型。需要注意的是,NCF模型的训练非常耗时,建议使用GPU进行加速。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值