图节点嵌入相关算法学习笔记

news/2024/4/25 16:21:18/文章来源:https://blog.csdn.net/submarineas/article/details/129213243

引言

本篇笔记为coggle 2月打卡任务,正好也在学习cs224w,干脆就一起做了,以下是任务列表:

任务名称难度
任务1:图属性与图构造低、1
任务2:图查询与遍历低、2
任务3:节点中心性与应用中、2
任务4:图节点嵌入算法(DeepWalk/node2vec)高、3
任务5:图节点嵌入算法:LINE/SDNE高、3
任务6:图节点嵌入算法:GraphGAN高、3

task1 图属性与图构造

  • 步骤1:导入networkx
  • 步骤2:加载Wiki数据集,包含来自 19 个类别的 2405 个文档和它们之间的 17981个边。
  • 步骤3:使用networkx构造上述有向图
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt# 两列,分别为节点id,节点类别
group = pd.read_csv('http://mirror.coggle.club/dataset/graph-wiki/group.txt.zip', sep='\t', header=None)# 两列,分别为出发节点id,目的节点id
graph = pd.read_csv('http://mirror.coggle.club/dataset/graph-wiki/graph.txt.zip', sep='\t', header=None)g = nx.DiGraph()# 只添加前100条边
g.add_edges_from(graph.values[:100])
nx.draw_spring(g)# 添加所有数据
g = nx.DiGraph()
g.add_edges_from(graph.values[:])

在这里插入图片描述

task2 图查询与遍历

  1. 步骤1:使用networkx对Wiki数据集进行如下统计
    • 节点个数、边个数
    • 节点度平均
    • 存在指向自身节点的个数
  2. 步骤2:对节点1397进行深度和广度遍历,设置搜索最大深度为5
  3. 步骤3:判断节点1573与节点1397之间是否存在联通性
# 边个数 节点个数
g.number_of_edges(), g.number_of_nodes()# 度均值
np.mean([x[1] for x in list(g.degree())])# 对节点1397的深度5内进行深度和广度遍历
nx.dfs_tree(g, 1397, 5).nodes()
nx.bfs_tree(g, 1397, 5).nodes()# 节点1573与节点1397之间的路径
list(nx.connectivity.node_disjoint_paths(g, 1573, 1397))
"""
[[1573, 2337, 489, 708, 1525, 1397],[1573, 280, 696, 1610, 1445, 1397],[1573, 445, 2395, 750, 1397],[1573, 933, 1455, 1401, 1412, 1397]]
"""

task3 节点中心性与应用

本task的数据为:

# 文章1
'''
一纸四季报,令芯片巨头英特尔一夜间股价重挫近6.5%,市值蒸发80亿美元,再度被AMD反超。这份严重缩水的财报显示,英特尔在去年四季度营收大降32%至140亿美元,是2016年以来最低单季收入;净利润由三季度的10.2亿美元转为近7亿美元净亏损;毛利率更从2021年四季度的53.6%大幅下降至39.2%。此番业绩“跳水”并非英特尔一家的一时失利,在全球PC出货量整体下滑的背景下,包括英特尔、AMD、英伟达、高通在内的芯片企业,均在过去一年里出现不同程度的收入与利润下滑,但英特尔的确是其中的重灾区。
'''# 文章2
'''
2021年,成都地区生产总值已经超过1.99万亿元,距离2万亿门槛仅咫尺之间。在去年遭受多轮疫情冲击及高温限电冲击的不利影响下,2022年,成都市实现地区生产总值20817.5亿元,按可比价格计算,比上年增长2.8%。成都因此成为第7个跨过GDP2万亿门槛的城市。目前,GDP万亿城市俱乐部中形成了4万亿、3万亿、2万亿和万亿这四个梯队。上海和北京在2021年跨过了4万亿,深圳2021年跨过了3万亿,重庆、广州、苏州和成都则是2万亿梯队。在排名前十的城市中,预计武汉将超过杭州。武汉市政府工作报告称,预计2022年武汉地区生产总值达到1.9万亿元左右。而杭州市统计局公布的数据显示,杭州2022年地区生产总值为18753亿元。受疫情影响,武汉在2020年GDP排名退居杭州之后。
'''# 文章3
'''
据报道,美国证券交易委员会(SEC)与特斯拉首席执行官埃隆·马斯克之间又起波澜。SEC正对马斯克展开调查,主要审查内容是,马斯克是否参与了关于特斯拉自动驾驶软件的不恰当宣传。据知情人士透露,该机构正在调查马斯克是否就驾驶辅助技术发表了不恰当的前瞻声明。特斯拉在2014年首次发布了其自动驾驶辅助功能,公司声称该功能可以让汽车在车道内自动转向、加速和刹车。目前所有特斯拉车辆都内置了该软件。
'''

步骤1:筛选度最大的Top10个节点,并对节点深度1以内的节点进行可视化;

# 筛选度最大的Top10个节点,并对节点深度1以内的节点进行可视化;
g_degree = pd.DataFrame(g.degree()).sort_values(by=1)
g_degree = g_degree.iloc[-10:]selected_nodes = []
for node in g_degree[0].values:selected_nodes += list(nx.dfs_tree(g, node, 1).nodes())nx.draw_spring(g.subgraph(selected_nodes), node_size=3)

在这里插入图片描述


步骤2:使用PageRank筛选Top10个节点,并对节点深度1以内的节点进行可视化;

# 使用PageRank筛选Top10个节点,并对节点深度1以内的节点进行可视化
g_pagerank = pd.DataFrame.from_dict(nx.pagerank(g), orient='index')
g_pagerank = g_pagerank.sort_values(by=0)g_pagerank = g_pagerank.iloc[-10:]
selected_nodes = []
for node in g_pagerank[0].index:selected_nodes += list(nx.dfs_tree(g, node, 1).nodes())nx.draw_spring(g.subgraph(selected_nodes), node_size=3)

在这里插入图片描述

步骤3:文本关键词提取算法RAKE

这里以文章一为例,先将上述文章1的内容规整一下:

content = "一纸四季报,令芯片巨头英特尔一夜间股价重挫近6.5%,市值蒸发80亿美元,再度被AMD反超。这份严重缩水的财报显示,英特尔在去年四季度营收大降32%至140亿美元,是2016年以来最低单季收入;净利润由三季度的10.2亿美元转为近7亿美元净亏损;毛利率更从2021年四季度的53.6%大幅下降至39.2%。此番业绩“跳水”并非英特尔一家的一时失利,在全球PC出货量整体下滑的背景下,包括英特尔、AMD、英伟达、高通在内的芯片企业,均在过去一年里出现不同程度的收入与利润下滑,但英特尔的确是其中的重灾区。"

然后使用RAKE算法对上述内容进行提取,并计算单词打分 wordDegree (w) / wordFrequency (w),以及统计每个文章Top10关键词:

import jieba
from collections import Counterg2 = nx.Graph()
words = jieba.lcut(content)
words = [x for x in words if len(x) > 1]
for i in range(len(words)-2):for j in range(i-2, i+2):if i == j:continueg2.add_edge(words[i], words[j])g2_node_gree = dict(g2.degree())
word_counter = dict(Counter(words))g2_node_gree = pd.DataFrame.from_dict(g2_node_gree, orient='index')
g2_node_gree.columns = ['degree']g2_node_gree['freq'] = g2_node_gree.index.map(word_counter)
g2_node_gree['score'] = g2_node_gree['degree'] / g2_node_gree['freq']g2_node_gree.sort_values(by='score').index[-10:]"""
['32%', '140', '2016', '以来', '最低', '单季', '收入', '利润', '缩水', '净利润']
"""

其余两个就不再详述,这里贴出结果为:

# ['增长', '2.8%', '成都', '2020', '成为', '超过', 'GDP2', '目前', '可比价格', '因此']
# ['主要', '审查', '内容', '参与', '关于', '软件', '所有', '宣传', '人士', '恰当']

步骤4:文本关键词提取算法TextRank

这里跟步骤三一样,直接给出代码为:

g2 = nx.Graph()words = jieba.lcut(content)
words = [x for x in words if len(x) > 1]
for i in range(len(words)-2):for j in range(i-2, i+2):if i == j:continueg2.add_edge(words[i], words[j])g2_node_gree = pd.DataFrame.from_dict(nx.pagerank(g2), orient='index')
g2_node_gree.columns = ['degree']
g2_node_gree = g2_node_gree.sort_values(by='degree')

三篇文章提取统计的结果为:

# ['39.2%', '四季', '一纸', 'AMD', '下滑', '四季度', '收入', '芯片', '亿美元', '英特尔']
# ['万亿元', '成都', '地区', '2021', '城市', '杭州', '武汉', '2022', '生产总值', '万亿']
# ['功能', '是否', '辅助', '调查', '恰当', 'SEC', '驾驶', '自动', '马斯克', '特斯拉']

下图是task任务下插入的一张图,但我不太清楚这张图怎么画的,就以上信息好像不怎么够,提取出来的6个关键词列表好像除了根据算法认定的词权重外似乎是没多大关系?之后再研究一下:
在这里插入图片描述

当然,这里我尝试了一些简单的方式,比如我看到有直接用相关性的,这里我大概修改了一下代码,为:

G = nx.Graph()keywords_list = [['39.2%', '四季', '一纸', 'AMD', '下滑', '四季度', '收入', '芯片', '亿美元', '英特尔'],['功能', '是否', '辅助', '调查', '恰当', 'SEC', '驾驶', '自动', '马斯克', '特斯拉'],['万亿元', '成都', '地区', '2021', '城市', '杭州', '武汉', '2022', '生产总值', '万亿'],['32%', '140', '2016', '以来', '最低', '单季', '收入', '利润', '缩水', '净利润'],['增长', '2.8%', '成都', '2020', '成为', '超过', 'GDP2', '目前', '可比价格', '因此'],['主要', '审查', '内容', '参与', '关于', '软件', '所有', '宣传', '人士', '恰当']
]# 定义一个函数来计算两个关键词列表之间的相关性
def similarity(list1, list2):# 计算两个列表之间的交集和并集intersection = set(list1) & set(list2)union = set(list1) | set(list2)# 计算交集与并集之比作为相关性度量return len(intersection) / len(union)# 添加节点和边
for keywords in keywords_list:G.add_nodes_from(keywords)
for i in range(len(keywords_list)-1):for j in range(i+1, len(keywords_list)):# 计算两个关键词列表之间的相关性,并作为边的权重weight = similarity(keywords_list[i], keywords_list[j])# 只有当相关性大于0时才添加边if weight > 0:G.add_edge(keywords_list[i][0], keywords_list[j][0], weight=weight)nx.draw(G, with_labels=True, font_weight='bold',node_color='skyblue',edge_color='gray')
plt.show()

有些丑,没有上图好看,就不贴出来献丑了,emmm,可以自己跑跑试试,因为我是两个算法针对三段文章提取出来的,所以就直接取交并,而没有用到分词出来的权重,虽然结果感觉上差不多,还是需要词之间的相关性,这个不知道怎么定义。

task4 图节点嵌入算法:DeepWalk/node2vec

这里两个算法的原理,我已经在前面两篇文章中做了详细推导与说明,为:

CS224W课程学习笔记(三):DeepWalk算法原理与说明

CS224W课程学习笔记(四):node2vec算法原理与说明

deepwalk

首先写出随机游走的采样序列算法:

import random
def deepwalk(G, walk_length):nodes = G.nodes()history_walks = []# 对于每个节点for node in nodes:# 从当前节点开始random_walk_length = [node]# 开始游走for i in range(walk_length-1):# 找到节点邻居neighbors = list(G.neighbors(node))# 排除已经游走的邻居neighbors = list(set(neighbors) - set(random_walk_length))    if len(neighbors) == 0:break# 随机挑选邻居random_neighbor = random.choice(neighbors)            random_walk_length.append(random_neighbor)# 从下一个邻居继续游走node = random_neighbor# 此节点的游走路径history_walks.append(random_walk_length)return history_walks

然后我们加载wiki数据集,并用50维做嵌入,生成节点类别:

g = nx.DiGraph()
# 构件图
g.add_edges_from(graph.values[:])
# 游走
history_walks = deepwalk(g, 100)from gensim.models import Word2Vec
# 训练word2vec
w2v = Word2Vec(history_walks, vector_size=50, window=5)
# 节点类别,因为word2vec有单独节点次序
node_group = group.iloc[list(w2v.wv.key_to_index.keys())][1].values
"""
array([18, 18,  4, ..., 11,  2, 17])
"""

根据上面得到的节点类别做降维与使用TSNE算法可视化,对于TSNE算法,我在deepwalk笔记中对该概念和PCA降维进行了对比,具体可以看上述我引用出来的第三篇,这里不再详述,那代码为:

from sklearn.manifold import TSNEtsne = TSNE(n_components=2)
tsne_data = tsne.fit_transform(w2v.wv.vectors)import matplotlib.cm as cm
x = np.arange(20)
ys = [i+x+(i*x)**2 for i in range(20)]
colors = cm.rainbow(np.linspace(0, 1, len(ys)))plt.scatter(tsne_data[:, 0], tsne_data[:, 1],color=colors[node_group]
)

在这里插入图片描述

然后我们可以使用节点嵌入向量 + 逻辑回归进行训练,并记录验证集准确率:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression# 划分数据集
x_tr, x_val, y_tr, y_val = train_test_split(w2v.wv.vectors, node_group, test_size=0.2, stratify=node_group
)# 模型训练与验证,准确率0.535
model = LogisticRegression()
model.fit(x_tr, y_tr)
model.score(x_val, y_val)
"""
0.5642023346303502
"""

还行,比预先版本的0.535要高0.03,因为逻辑回归没有给默认参数,这点随机性可以理解,毕竟分高了,emmm。

node2vec

node2vec是一种综合考虑DFS邻域和BFS邻域的graph embedding方法。简单来说,可以看作是deepwalk的一种扩展,是结合了DFS和BFS随机游走的deepwalk。node2vec依然采用随机游走的方式获取顶点的近邻序列,不同的是node2vec采用的是一种有偏的随机游走。

这里将上述的labels和graph改动一下格式,因为原来是以zip文件转格式而来并且是以制表符为分隔,先wget下载文件后,解压运行如下代码:

import pandas as pddf = pd.read_table("graph.txt", sep="\t")
df2 = pd.read_table("label.txt", sep="\t")# 将制表符替换成空格
df = df.replace("\t", " ")
df.to_csv("train.txt",sep=" ",index=False)
df.to_csv("test.txt",sep=" ",index=False)

然后根据我上面第四篇笔记中,浅梦大佬开发的ge包进行训练,代码改为:

import numpy as npfrom ge.classify import read_node_label, Classifier
from ge import Node2Vec
from sklearn.linear_model import LogisticRegressionimport matplotlib.pyplot as plt
import networkx as nx
from sklearn.manifold import TSNEdef evaluate_embeddings(embeddings):# group = pd.read_csv('http://mirror.coggle.club/dataset/graph-wiki/group.txt.zip', sep='\t', header=None)X, Y = read_node_label('test.txt')tr_frac = 0.8print("Training classifier using {:.2f}% nodes...".format(tr_frac * 100))clf = Classifier(embeddings=embeddings, clf=LogisticRegression())clf.split_train_evaluate(X, Y, tr_frac)def plot_embeddings(embeddings,):X, Y = read_node_label('test.txt')emb_list = []for k in X:emb_list.append(embeddings[k])emb_list = np.array(emb_list)model = TSNE(n_components=2)node_pos = model.fit_transform(emb_list)color_idx = {}for i in range(len(X)):color_idx.setdefault(Y[i][0], [])color_idx[Y[i][0]].append(i)for c, idx in color_idx.items():plt.scatter(node_pos[idx, 0], node_pos[idx, 1], label=c)plt.legend()plt.show()

在这里插入图片描述

使用逻辑回归进行测试,得到的分数为0.5883,即:

{'micro': 0.5883575883575883, 'macro': 0.459881682897527, 'samples': 0.5883575883575883, 'weighted': 0.5816291785521392, 'acc': 0.5883575883575883}

task5 图节点嵌入算法:LINE/SDNE

步骤1:使用LINE对Wiki数据集节点嵌入,维度为50维
步骤2:每个group中20%的节点作为验证集,剩余的作为训练集
步骤3:使用节点嵌入向量 + 逻辑回归进行训练,并记录验证集准确率
步骤4:使用SDNE重复上述操作
步骤5:使用t-SNE将节点的LINE/SDNE特征降维,绘制散点图,节点颜色使用group进行区分

task6 图节点嵌入算法:GraphGAN

  • 步骤1:使用GraphGAN对Wiki数据集节点嵌入,维度为50维
  • 步骤2:每个group中20%的节点作为验证集,剩余的作为训练集
  • 步骤3:使用节点嵌入向量 + 逻辑回归进行训练,并记录验证集准确率
  • 步骤4:使用t-SNE将节点的GraphGAN特征降维,绘制散点图,节点颜色使用group进行区分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_74575.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis(10)事务和锁机制

Redis事务定义 Redis 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis 事务的主要作用就是串联多个命令防止别的命令插队。 Multi、Exec、discard Redis 事务中…

15 Nacos客户端实例注册源码分析

Nacos客户端实例注册源码分析 实例客户端注册入口 流程图&#xff1a; 实际上我们在真实的生产环境中&#xff0c;我们要让某一个服务注册到Nacos中&#xff0c;我们首先要引入一个依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId>&l…

idea debug elasticsearch8.6.2 源码

前置依赖&#xff1a; gradle 7.5.1&#xff1a;Gradle | Releases openJDK 17&#xff1a;https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe idea&#xff1a;IntelliJ IDEA 2022.1 (Ultimate Edition) 1、下载源码 8.6.2 zip包 并解压 地址&…

在 Flutter 中使用 webview_flutter 4.0 | 基础用法与事件处理

大家好&#xff0c;我是 17。 Flutter WebView 一共写了四篇文章 在 Flutter 中使用 webview_flutter 4.0 | 基础用法与事件处理在 Flutter 中使用 webview_flutter 4.0 | js 交互Flutter WebView 性能优化&#xff0c;让 h5 像原生页面一样优秀&#xff0c;已入选 掘金一周 …

「回顾RKDC2023」飞凌嵌入式受邀亮相第七届瑞芯微开发者大会

2023年2月23-24日&#xff0c;第七届瑞芯微开发者大会&#xff08;RKDC2023&#xff09;在福州隆重举行&#xff0c;飞凌嵌入式作为瑞芯微生态合作伙伴受邀参会&#xff0c;并与数千名开发者科技公司代表及行业领袖共同聚焦行业新兴产品需求&#xff0c;探讨新硬件发展趋势&…

STC32单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能和使用✨STC32单片机普通 I/O 口中断&#xff0c;不是传统外部中断. &#x1f516;手册上描述&#xff1a;STC32G 系列支持所有的 I/O 中断&#xff0c;且支持 4 种中断模式&#xff1a;下降沿中断、上升沿中断、低电平中断、高电平中断。每组 …

网络方面的复习

这个博客参考了许多up主的视频和网上其他的博主的文章&#xff0c;还有我老师的ppt 这里是目录一、osi七层模型&#xff08;参考模型&#xff09;1.物理层2.数据链路层&#xff08;数据一跳一跳进行传递&#xff09;3.网络层&#xff08;端到端传输&#xff09;4.传输层&#x…

C语言深度剖析:关键字

C语言深度剖析:关键字C语言深度剖析:关键字前言定义与声明&#xff08;补充内容&#xff09;最宏大的关键字-auto最快的关键字-register关键字static被冤枉的关键字-sizeof整型在内存中的存储原码、反码、补码大小端补充理解变量内容的存储和取出为什么都是补码整型取值范围关于…

Pages Hexo 博客使用总结

参考&#xff1a;https://blog.csdn.net/yaorongke/article/details/119089190 Hexo Fluid 首页&#xff1a;https://hexo.fluid-dev.com/docs/ Hexo Fluid 配置&#xff1a;https://hexo.fluid-dev.com/docs/guide/#%E5%B1%95%E7%A4%BA-pv-%E4%B8%8E-uv-%E7%BB%9F%E8%AE%A1 文…

IM即时通讯开发如何解决大量离线消息导致客户端卡顿的

大部分做后端开发的朋友&#xff0c;都在开发接口。客户端或浏览器h5通过HTTP请求到我们后端的Controller接口&#xff0c;后端查数据库等返回JSON给客户端。大家都知道&#xff0c;HTTP协议有短连接、无状态、三次握手四次挥手等特点。而像游戏、实时通信等业务反而很不适合用…

改进的 A*算法的路径规划(路径规划+代码+毕业设计)

引言 近年来&#xff0c;随着智能时代的到来&#xff0c;路径规划技术飞快发展&#xff0c;已经形成了一套较为成熟的理论体系。其经典规划算法包括 Dijkstra 算法、A算法、D算法、Field D算法等&#xff0c;然而传统的路径规划算法在复杂的场景的表现并不如人意&#xff0c;例…

improve-2

BFC 块级格式化上下文&#xff0c;是一个独立的渲染区域&#xff0c;让处于 BFC 内部的元素与外部的元素相互隔离&#xff0c;使内外元素的定位不会相互影响。 IE下为 Layout&#xff0c;可通过 zoom:1 触发 触发条件: 根元素position: absolute/fixeddisplay: inline-block /…

区块链到底是个啥???

点击上方“小强的进阶之路”&#xff0c;选择“星标”公众号优质文章&#xff0c;及时送达预计阅读时间: 2分钟区块链起源2008 年&#xff0c;金融系统崩溃&#xff0c;世界惊恐万状。随后多年&#xff0c;银行、监管机构等负责金融系统运行的中央实体管理不善。那一时期&#…

BurpSuite安装

BurpSuiteBurpSuite简介BurpSuite安装BurpSuite简介 BurpSuite (简称Burp&#xff09;是基于Java开发的Web安全领域的集成工具&#xff0c;被称为信息安全界的瑞士军刀&#xff0c;它包含Proxy、Intruder、Repeater、Decoder.Comparer等多个模块&#xff0c;模块间通过共享相互…

戴尔dell inspiron-5598电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。硬件型号驱动情况主板X99 K9 v2 Machinist处理器i5-10210U / *i7-10510U已驱动内存20GB已驱动硬盘1000GB SAMSUNG 860 QVO SATA已驱动显卡Intel UHD 620已驱动声卡Realtek ALC3204/236已驱动网卡RTL8168H Gigabit Ethernet已…

PMP新考纲考试难不难,通过率怎样?

PMP考试难不难&#xff0c;还是因人而异的&#xff0c;对小白而言&#xff0c;肯定是难的&#xff0c;对项目管理老人而言&#xff0c;难度肯定是没那么高。 据考过的朋友讲&#xff0c;新考纲是有点难度的&#xff0c;尤其是最开始6月25日的考试&#xff0c;2023年就简单些了…

Linux 练习三 (Makefile工程管理器)

文章目录Makefile工程管理器第一个makefile&#xff1a;编写两个.c源文件&#xff0c;并且让一个调用另外一个&#xff0c;使用makefile建立依赖&#xff0c;生成可执行文件&#xff0c;并执行。伪目标变量预定义变量和自动变量通配符和模式匹配内置函数循环指定makefile文件综…

Allegro如何标注PCB的尺寸参数操作指导

Allegro如何标注PCB的尺寸参数操作指导 在输出生产文件之前,需要对PCB的尺寸进行标注,如下图 用Allegro如何进行标注,具体操作如下 点击Manufacture选择Dimension Enviroment<

2023CS双非保研985经验分享(南大、华科、中科大科学岛、国防科大、西交、中南、深圳大学、北邮、中科院等)

前言&#xff1a; 2022保研以来&#xff0c;因为自己的双非背景&#xff0c;要与985、211的排名靠前的计科大佬竞争&#xff0c;不自信、焦虑无时无刻的包围着我&#xff1b;所幸&#xff0c;一路以受到了许多学长、学姐耐心的帮助&#xff0c;也有很多保研的同学一路互相支撑。…

AI绘画进军三次元,有人用它打造赛博女友?(diffusion)

目录0 写在前面1 AI绘画技术飞跃2 效果展示3 环境配置3.1 下载基础模型3.2 更新.NET和模型3.3 下载绘画模型3.4 启动项目3.5 标签配置4 结语0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&a…