当前位置: 首页 > news >正文

python画神经网络图

代码1(画神经网络连接图)


from math import cos, sin, atan
import matplotlib.pyplot as plt
# 注意这里并没有用到这个networkx这个库,完全是根据matploblib这个库来画的。
class Neuron():def __init__(self, x, y,radius,name=None):self.x = xself.y = yself.radius = radiusself.name = namedef draw(self):circle = plt.Circle((self.x, self.y), radius=self.radius, fill=False)plt.gca().add_patch(circle)if(self.name is not None):plt.text(self.x,self.y,self.name)#注意这个写法,现在整个图是水平的,不再是竖直的
def plotConnection(neuron1,neuron2):neuron_radius= neuron1.radiusangle = atan((neuron2.y - neuron1.y)/float(neuron2.x - neuron1.x))x_adjustment = neuron_radius * cos(angle)y_adjustment = neuron_radius * sin(angle)line = plt.Line2D((neuron1.x + x_adjustment, neuron2.x - x_adjustment), (neuron1.y + y_adjustment, neuron2.y - y_adjustment),color="gray")plt.gca().add_line(line)class Connection():def __init__(self,neuron1,neuron2):self.n1 = neuron1self.n2 = neuron2 pass# 
radius =0.05
n1 = Neuron(1,1.1,radius,name="n1")
n1.draw()n2 = Neuron(1,1.3,radius,name="n2")
n2.draw()n3 = Neuron(1,1.5,radius,name="n3")
n3.draw()n4 = Neuron(1,1.7,radius)
n4.draw()n5 = Neuron(1,1.9,radius)
n5.draw()n6 = Neuron(2,1.0,radius)
n6.draw()n7 = Neuron(2,1.2,radius,name="n7")
n7.draw()n8 = Neuron(2,1.4,radius)
n8.draw()n9 = Neuron(2,1.6,radius,name="n9")
n9.draw()n10 = Neuron(2,1.8,radius)
n10.draw()n11 = Neuron(2,2.0,radius)
n11.draw()plotConnection(n2,n7)
plotConnection(n1,n9)
plotConnection(n3,n8)
plt.axis("scaled")
plt.show()## 现在这个地方有一个问题,就是这个图形应该是什么样子的

结果如下
在这里插入图片描述

代码2(画神经网络层连接)


from math import cos, sin, atan
import matplotlib.pyplot as plt
from itertools import product# 注意这里并没有用到这个networkx这个库,完全是根据matploblib这个库来画的。
class Neuron():def __init__(self, x, y,radius,name=None):self.x = xself.y = yself.radius = radiusself.name = namedef draw(self):circle = plt.Circle((self.x, self.y), radius=self.radius, fill=False)plt.gca().add_patch(circle)if(self.name is not None):plt.text(self.x,self.y,self.name)# 我是水平方向构造这个Layer类
class NeuronLayer():def __init__(self,positionX,initY,numNeurons,numNeuronsWidestLayer,vertical_distance_between_neurons,radius):# positionX:水平位置# numNeurons:神经元个数# numNeuronsWidestLayer: 为了居中,我需要知道最大的宽度, 并且计算出每个神经元的纵轴位置# vertical_distance_between_neurons: 相邻神经元的margin# radius: 每个神经元的半径self.positionX = positionX self.initY = initYself.numNeurons = numNeuronspositionY = initY + vertical_distance_between_neurons * (numNeuronsWidestLayer - numNeurons) / 2self.NeuronList=[]for i in range(numNeurons):neu = Neuron(self.positionX,positionY,radius)neu.draw()self.NeuronList.append(neu)positionY = positionY + vertical_distance_between_neurons#注意这个写法,现在整个图是水平的,不再是竖直的
def TwoNeuronsConnection(neuron1,neuron2):neuron_radius= neuron1.radiusangle = atan((neuron2.y - neuron1.y)/float(neuron2.x - neuron1.x))x_adjustment = neuron_radius * cos(angle)y_adjustment = neuron_radius * sin(angle)line = plt.Line2D((neuron1.x + x_adjustment, neuron2.x - x_adjustment), (neuron1.y + y_adjustment, neuron2.y - y_adjustment),color="gray",linewidth=0.2)plt.gca().add_line(line)def TwoLayersConnection(NeuronLayer1,NeuronLayer2):Layer1 = NeuronLayer1.NeuronListLayer2 = NeuronLayer2.NeuronListfor neuron1,neuron2 in product(Layer1,Layer2):TwoNeuronsConnection(neuron1,neuron2)##############################################
radius =0.05Layer1 = NeuronLayer(positionX=1,initY= 0.0,numNeurons=4,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.2,radius=0.05)
Layer2= NeuronLayer(positionX=2,initY= 0.0,numNeurons=10,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.2,radius=0.05)
Layer3 = NeuronLayer(positionX=3,initY= 0.0,numNeurons=8,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.2,radius=0.05)
Layer4 = NeuronLayer(positionX=4,initY= 0.0,numNeurons=5,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.2,radius=0.05)
Layer5 = NeuronLayer(positionX=5,initY= 0.0,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.2,radius=0.05)TwoLayersConnection(Layer1,Layer2)
TwoLayersConnection(Layer2,Layer3)
TwoLayersConnection(Layer3,Layer4)
TwoLayersConnection(Layer4,Layer5)########################
plt.axis("scaled")
#plt.axis('off')
plt.show()
########################## 现在这个地方有一个问题,就是这个图形应该是什么样子的
## 这个

结果如下
在这里插入图片描述

代码3(画两个子网络)


from math import cos, sin, atan
import matplotlib.pyplot as plt
from itertools import product# 注意这里并没有用到这个networkx这个库,完全是根据matploblib这个库来画的。
class Neuron():def __init__(self, x, y,radius,name=None):self.x = xself.y = yself.radius = radiusself.name = namedef draw(self):circle = plt.Circle((self.x, self.y), radius=self.radius, fill=False)plt.gca().add_patch(circle)if(self.name is not None):plt.text(self.x,self.y,self.name)# 我是水平方向构造这个Layer类
class NeuronLayer():def __init__(self,positionX,initY,numNeurons,numNeuronsWidestLayer,vertical_distance_between_neurons,radius):# positionX:水平位置# numNeurons:神经元个数# numNeuronsWidestLayer: 为了居中,我需要知道最大的宽度, 并且计算出每个神经元的纵轴位置# vertical_distance_between_neurons: 相邻神经元的margin# radius: 每个神经元的半径self.positionX = positionX self.initY = initYself.numNeurons = numNeuronspositionY = initY + vertical_distance_between_neurons * (numNeuronsWidestLayer - numNeurons) / 2self.NeuronList=[]for i in range(numNeurons):neu = Neuron(self.positionX,positionY,radius)neu.draw()self.NeuronList.append(neu)positionY = positionY + vertical_distance_between_neurons#注意这个写法,现在整个图是水平的,不再是竖直的
def TwoNeuronsConnection(neuron1,neuron2):neuron_radius= neuron1.radiusangle = atan((neuron2.y - neuron1.y)/float(neuron2.x - neuron1.x))x_adjustment = neuron_radius * cos(angle)y_adjustment = neuron_radius * sin(angle)line = plt.Line2D((neuron1.x + x_adjustment, neuron2.x - x_adjustment), (neuron1.y + y_adjustment, neuron2.y - y_adjustment),color="gray",linewidth=0.2)plt.gca().add_line(line)def TwoLayersConnection(NeuronLayer1,NeuronLayer2):Layer1 = NeuronLayer1.NeuronListLayer2 = NeuronLayer2.NeuronListfor neuron1,neuron2 in product(Layer1,Layer2):TwoNeuronsConnection(neuron1,neuron2)##############################################
radius =0.05Layer11 = NeuronLayer(positionX=1,initY= 0.0,numNeurons=4,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.25,radius=0.05)
Layer12= NeuronLayer(positionX=1,initY= 1,numNeurons=4,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.25,radius=0.05)
Layer21 = NeuronLayer(positionX=2,initY= 0.0,numNeurons=10,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)
Layer22 = NeuronLayer(positionX=2,initY= 1.8,numNeurons=10,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)Layer31 = NeuronLayer(positionX=3,initY= 0.0,numNeurons=8,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)
Layer32 = NeuronLayer(positionX=3,initY= 1.8,numNeurons=8,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)
Layer41 = NeuronLayer(positionX=4,initY= 0.0,numNeurons=5,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)
Layer42 = NeuronLayer(positionX=4,initY= 1.8,numNeurons=5,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)Layer51 = NeuronLayer(positionX=5,initY= 0.0,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)
Layer52 = NeuronLayer(positionX=5,initY= 1.8,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=0.05)TwoLayersConnection(Layer11,Layer21)
TwoLayersConnection(Layer11,Layer22)
TwoLayersConnection(Layer12,Layer21)
TwoLayersConnection(Layer12,Layer22)TwoLayersConnection(Layer21,Layer31)
TwoLayersConnection(Layer22,Layer32)TwoLayersConnection(Layer31,Layer41)
TwoLayersConnection(Layer32,Layer42)TwoLayersConnection(Layer41,Layer51)
TwoLayersConnection(Layer42,Layer52)
########################
plt.axis("scaled")
#plt.axis('off')
plt.show()
########################## 现在这个地方有一个问题,就是这个图形应该是什么样子的
## 这个

结果如下
在这里插入图片描述

添加变量

from math import cos, sin, atan
import matplotlib.pyplot as plt
from itertools import product
# mac显示中文##
plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签# 首先实现Neuron类
class Neuron():def __init__(self, x, y,radius,name=None):self.x = xself.y = yself.radius = radiusself.name = namedef draw(self):circle = plt.Circle((self.x, self.y), radius=self.radius, fill=False)plt.gca().add_patch(circle)if(self.name is not None):plt.text(self.x,self.y,self.name)# 水平方向构造Layer类
class NeuronLayer():def __init__(self,positionX,initY,numNeurons,numNeuronsWidestLayer,vertical_distance_between_neurons,radius):# positionX:水平位置# initY: 神经元的初始位置# numNeurons:神经元个数# numNeuronsWidestLayer: 为了居中,我需要知道最大的宽度, 并且计算出每个神经元的纵轴位置# vertical_distance_between_neurons: 相邻神经元的margin# radius: 每个神经元的半径self.positionX = positionX self.initY = initYself.numNeurons = numNeuronspositionY = initY + vertical_distance_between_neurons * (numNeuronsWidestLayer - numNeurons) / 2self.NeuronList=[]for i in range(numNeurons):neu = Neuron(self.positionX,positionY,radius)neu.draw()self.NeuronList.append(neu)positionY = positionY + vertical_distance_between_neuronsclass PlotNeuralConnection:def __init__():pass# 连接两个神经元
def TwoNeuronsConnection(neuron1,neuron2):neuron_radius= neuron1.radiusangle = atan((neuron2.y - neuron1.y)/float(neuron2.x - neuron1.x))x_adjustment = neuron_radius * cos(angle)y_adjustment = neuron_radius * sin(angle)##################### 添加直线 ###########################line = plt.Line2D((neuron1.x + x_adjustment, neuron2.x - x_adjustment), (neuron1.y + y_adjustment, neuron2.y - y_adjustment),color="gray",linewidth=0.2)plt.gca().add_line(line)############################################################################## 添加箭头(不好看) ############################ startX,startY = neuron1.x + x_adjustment,neuron1.y + y_adjustment# deltaX,deltaY = neuron2.x - x_adjustment - startX ,neuron2.y - y_adjustment - startY # plt.gca().arrow(startX,startY,deltaX,deltaY, width=0.001, color="gray", #      head_width=0.01, head_length=0.05, overhang=1.0,length_includes_head=True)########################################################## 连接相邻两层神经元
def TwoLayersConnection(NeuronLayer1,NeuronLayer2):Layer1 = NeuronLayer1.NeuronListLayer2 = NeuronLayer2.NeuronListfor neuron1,neuron2 in product(Layer1,Layer2):TwoNeuronsConnection(neuron1,neuron2)##############################################
radius =0.075
Layer11 = NeuronLayer(positionX=1,initY= 0.0,numNeurons=4,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.25,radius=radius)
Layer12= NeuronLayer(positionX=1,initY= 1,numNeurons=4,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.25,radius=radius)
Layer21 = NeuronLayer(positionX=2,initY= 0.0,numNeurons=10,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer22 = NeuronLayer(positionX=2,initY= 1.8,numNeurons=10,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer31 = NeuronLayer(positionX=3,initY= 0.0,numNeurons=8,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer32 = NeuronLayer(positionX=3,initY= 1.8,numNeurons=8,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer41 = NeuronLayer(positionX=4,initY= 0.0,numNeurons=5,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer42 = NeuronLayer(positionX=4,initY= 1.8,numNeurons=5,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer51 = NeuronLayer(positionX=5,initY= 0.0,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer52 = NeuronLayer(positionX=5,initY= 1.8,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
TwoLayersConnection(Layer11,Layer21)
TwoLayersConnection(Layer11,Layer22)
TwoLayersConnection(Layer12,Layer21)
TwoLayersConnection(Layer12,Layer22)
TwoLayersConnection(Layer21,Layer31)
TwoLayersConnection(Layer22,Layer32)
TwoLayersConnection(Layer31,Layer41)
TwoLayersConnection(Layer32,Layer42)
TwoLayersConnection(Layer41,Layer51)
TwoLayersConnection(Layer42,Layer52)
########################################################################################################################## 添加变量名 ###########################
cnt = 1
for neu in Layer11.NeuronList:plt.text(neu.x -0.5,neu.y-0.05,"变量{}".format(9-cnt))cnt=cnt+1
cnt = 1
for neu in Layer12.NeuronList:plt.text(neu.x -0.5,neu.y-0.05,"变量{}".format(5-cnt))cnt=cnt+1
################################################################################################# 添加上箭头 ####################################################################################################################### 去除画图边框 ##############################
plt.axis("scaled")
plt.axis('off')
plt.show()
####################################################################

结果如下
在这里插入图片描述

初稿1

from math import cos, sin, atan
import matplotlib.pyplot as plt
from itertools import product
# mac显示中文##
plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签# 首先实现Neuron类
class Neuron():def __init__(self, x, y,radius,name=None):self.x = xself.y = yself.radius = radiusself.name = namedef draw(self):circle = plt.Circle((self.x, self.y), radius=self.radius, fill=False)plt.gca().add_patch(circle)if(self.name is not None):plt.text(self.x,self.y,self.name)# 水平方向构造Layer类
class NeuronLayer():def __init__(self,positionX,initY,numNeurons,numNeuronsWidestLayer,vertical_distance_between_neurons,radius):# positionX:水平位置# initY: 神经元的初始位置# numNeurons:神经元个数# numNeuronsWidestLayer: 为了居中,我需要知道最大的宽度, 并且计算出每个神经元的纵轴位置# vertical_distance_between_neurons: 相邻神经元的margin# radius: 每个神经元的半径self.positionX = positionX self.initY = initYself.numNeurons = numNeuronspositionY = initY + vertical_distance_between_neurons * (numNeuronsWidestLayer - numNeurons) / 2self.NeuronList=[]for i in range(numNeurons):neu = Neuron(self.positionX,positionY,radius)neu.draw()self.NeuronList.append(neu)positionY = positionY + vertical_distance_between_neuronsclass PlotNeuralConnection:def __init__():pass# 连接两个神经元
def TwoNeuronsConnection(neuron1,neuron2):neuron_radius= neuron1.radiusangle = atan((neuron2.y - neuron1.y)/float(neuron2.x - neuron1.x))x_adjustment = neuron_radius * cos(angle)y_adjustment = neuron_radius * sin(angle)##################### 添加直线 ###########################line = plt.Line2D((neuron1.x + x_adjustment, neuron2.x - x_adjustment), (neuron1.y + y_adjustment, neuron2.y - y_adjustment),color="#4d4d4d",linewidth=0.2)plt.gca().add_line(line)############################################################################## 添加箭头(不好看) ############################ startX,startY = neuron1.x + x_adjustment,neuron1.y + y_adjustment# deltaX,deltaY = neuron2.x - x_adjustment - startX ,neuron2.y - y_adjustment - startY # plt.gca().arrow(startX,startY,deltaX,deltaY, width=0.001, color="#4d4d4d", #      head_width=0.01, head_length=0.05, overhang=1.0,length_includes_head=True)########################################################## 连接相邻两层神经元
def TwoLayersConnection(NeuronLayer1,NeuronLayer2):Layer1 = NeuronLayer1.NeuronListLayer2 = NeuronLayer2.NeuronListfor neuron1,neuron2 in product(Layer1,Layer2):TwoNeuronsConnection(neuron1,neuron2)##############################################
radius =0.075
Layer11 = NeuronLayer(positionX=1,initY= 0.0,numNeurons=4,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.25,radius=radius)
Layer12= NeuronLayer(positionX=1,initY= 1,numNeurons=4,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.25,radius=radius)
Layer21 = NeuronLayer(positionX=2,initY= 0.0,numNeurons=10,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer22 = NeuronLayer(positionX=2,initY= 1.8,numNeurons=10,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer31 = NeuronLayer(positionX=3,initY= 0.0,numNeurons=8,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer32 = NeuronLayer(positionX=3,initY= 1.8,numNeurons=8,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer41 = NeuronLayer(positionX=4,initY= 0.0,numNeurons=5,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer42 = NeuronLayer(positionX=4,initY= 1.8,numNeurons=5,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer51 = NeuronLayer(positionX=5,initY= 0.0,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer52 = NeuronLayer(positionX=5,initY= 1.8,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer61 = NeuronLayer(positionX=6,initY= 0.0,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
Layer62 = NeuronLayer(positionX=6,initY= 1.8,numNeurons=1,numNeuronsWidestLayer=10,vertical_distance_between_neurons=0.15,radius=radius)
TwoLayersConnection(Layer11,Layer21)
TwoLayersConnection(Layer11,Layer22)
TwoLayersConnection(Layer12,Layer21)
TwoLayersConnection(Layer12,Layer22)
TwoLayersConnection(Layer21,Layer31)
TwoLayersConnection(Layer22,Layer32)
TwoLayersConnection(Layer31,Layer41)
TwoLayersConnection(Layer32,Layer42)
TwoLayersConnection(Layer41,Layer51)
TwoLayersConnection(Layer42,Layer52)
TwoLayersConnection(Layer51,Layer61)
TwoLayersConnection(Layer52,Layer62)
######################################################################################################### 添加末尾神经元 #################################################################
posX1,posY1 = Layer52.NeuronList[0].x, Layer52.NeuronList[0].y 
neu1 = Neuron(posX1,posY1 +0.2, radius=radius)
neu1.draw()
TwoNeuronsConnection(neu1,Layer62.NeuronList[0])posX2,posY2= Layer51.NeuronList[0].x, Layer51.NeuronList[0].y 
neu2 = Neuron(posX2,posY2 + 0.2, radius=radius)
neu2.draw()
TwoNeuronsConnection(neu2,Layer61.NeuronList[0])neu3 = Neuron(posX2,posY2 - 0.2, radius=radius)
neu3.draw()
TwoNeuronsConnection(neu3,Layer61.NeuronList[0])
######################################################################################################### 添加神经元标识##########################################################
plt.text(Layer62.NeuronList[0].x+0.2,Layer62.NeuronList[0].y-0.05,"输出$\hat{\mu}$")
plt.text(Layer61.NeuronList[0].x+0.2,Layer61.NeuronList[0].y-0.05,"输出$\hat{\phi}/{\omega}$")
plt.text(neu2.x-0.2,neu2.y+0.15,"$log(1/{\omega})$")############################## 添加变量名 ###########################
cnt = 1
for neu in Layer11.NeuronList:plt.text(neu.x -0.5,neu.y-0.04,"变量{}".format(9-cnt))cnt=cnt+1
cnt = 1
for neu in Layer12.NeuronList:plt.text(neu.x -0.5,neu.y-0.04,"变量{}".format(5-cnt))cnt=cnt+1
################################################################################################# 添加上箭头 ###########################
line1 = plt.Line2D((1, 1), (2.8,3.5),color="#4d4d4d",linewidth=0.2)
plt.gca().add_line(line1)line2 = plt.Line2D((1, 5), (3.5,3.5),color="#4d4d4d",linewidth=0.2)
plt.gca().add_line(line2)
plt.text(2.5,3.6,"$\mu$参数通过GLM连接")plt.gca().arrow(5,3.5, 0, -0.7, width=0.001, color="#4d4d4d", head_width=0.05, head_length=0.05, overhang=1.0,length_includes_head=True,linewidth=0.2)
################################################################################################# 添加下箭头 ###########################
line1 = plt.Line2D((1, 1), (0.4,-0.3),color="#4d4d4d",linewidth=0.2)
plt.gca().add_line(line1)line2 = plt.Line2D((1, 5), (-0.3,-0.3),color="#4d4d4d",linewidth=0.2)
plt.gca().add_line(line2)
plt.text(2.5,-0.5,"$\phi$参数通过GLM连接")plt.gca().arrow(5,-0.3, 0, 0.7, color="#4d4d4d", head_width=0.05, head_length=0.05, overhang=1.0,length_includes_head=True,linewidth=0.2)
############################################################################################ 去除画图边框 ##############################
plt.axis("scaled")
plt.axis('off')
plt.savefig("./network.pdf")
plt.show()
####################################################################

结果如下
在这里插入图片描述

相关文章:

python画神经网络图

代码1(画神经网络连接图) from math import cos, sin, atan import matplotlib.pyplot as plt # 注意这里并没有用到这个networkx这个库,完全是根据matploblib这个库来画的。 class Neuron():def __init__(self, x, y,radius,nameNone):self.x xself.y …...

Bash 编程精粹:从新手到高手的全面指南之逻辑控制

在 Unix 和 Linux 系统中,Bash(Bourne-Again Shell)是一种广泛使用的 shell,提供了强大的脚本编程能力。本文将详细介绍 Bash 脚本中的逻辑控制结构,包括条件判断、分支选择、循环控制以及退出控制等内容。 条件判断&…...

自动化运维(三十)Ansible 实战之自定义插件

Ansible 自定义插件允许你扩展其功能,以满足特定的自动化需求。Ansible 支持多种类型的插件开发,如动态库存、查找、回调、过滤器、变量等。这里我们将通过实例,介绍如何开发、部署和使用一个自定义插件。 开发自定义查找插件 查找插件用于在 Ansible 任务中动态获取数据。…...

实习僧网站的实习岗位信息分析

目录 背景描述数据说明数据集来源问题描述分析目标以及导入模块1. 数据导入2. 数据基本信息和基本处理3. 数据处理3.1 新建data_clean数据框3.2 数值型数据处理3.2.1 “auth_capital”(注册资本)3.2.2 “day_per_week”(每周工作天数&#xf…...

C语言中局部变量和全局变量是否可以重名?为什么?

可以重名 在C语言中, 局部变量指的是定义在函数内的变量, 全局变量指的是定义在函数外的变量 他们在程序中的使用方法是不同的, 当重名时, 局部变量在其所在的作用域内具有更高的优先级, 会覆盖或者说隐藏同名的全局变量 具体来说: 局部变量的生命周期只在函数内部,如果出了…...

小程序中配置scss

找到:project.config.json 文件 setting 模块下添加: "useCompilerPlugins": ["sass","其他的样式类型"] 配置完成后,重启开发工具,并新建文件 结果:...

ZYNQ-Vitis(SDK)裸机开发之(四)PS端MIO和EMIO的使用

目录 一、ZYNQ中MIO和EMIO简介 二、Vivado中搭建block design 1.配置PS端MIO: 2.配置PS端EMIO: 三、Vitis中新建工程进行GPIO控制 1. GPIO操作头文件gpio_hdl.h: 2.GPIO操作源文件gpio_hdl.c: 3.main函数进行调用 例程开发…...

聊聊jvm中内存模型的坑

jvm线程的内存模型 看图,简单来说线程中操作的变量是副本。在并发情况下,如果数据发生变更,副本的数据就变为脏数据。这个时候就会有并发问题。 参考:https://www.cnblogs.com/yeyang/p/12580682.html 怎么解决并发问题 解决的…...

DevOps已死?2024年的DevOps将如何发展

随着我们进入2024年,DevOps也发生了变化。新兴的技术、变化的需求和发展的方法正在重新定义有效实施DevOps实践。 IDC预测显示,未来五年,支持DevOps实践的产品市场继续保持健康且快速增长,2022年-2027年的复合年增长率&#xff0…...

appium控制手机一直从下往上滑动

用于使用Appium和Selenium WebDriver在Android设备上滚动设置应用程序的界面。具体来说,它通过WebDriverWait和expected_conditions等待元素出现,然后使用ActionChains移动到该元素并执行滚动动作。在setUp中,它初始化了Appium的WebDriver和c…...

为什么光伏探勘测绘需要无人机?

随着全球对可再生能源需求的不断增长,光伏产业也迎来了快速发展的机遇。光伏电站作为太阳能发电的主要形式之一,其建设前期的探勘测绘工作至关重要。在这一过程中,无人机技术的应用正逐渐展现出其独特的优势。那么,为什么光伏探勘…...

day10 | 栈与队列 part-2 (Go) | 20 有效的括号、1047 删除字符串中的所有相邻重复项、150 逆波兰表达式求值

今日任务 20 有效的括号 (题目: . - 力扣(LeetCode))1047 删除字符串中的所有相邻重复项 (题目: . - 力扣(LeetCode))150 逆波兰表达式求值 (题目: . - 力扣(LeetCode)) 20 有效的括号 题目: . - 力扣&…...

深入解析Tomcat的工作流程

tomcat解析 Tomcat是一个广泛使用的开源Servlet容器,用于托管Java Web应用程序。理解Tomcat的工作流程对于开发人员和系统管理员来说是非常重要的。本文将深入探讨Tomcat的工作原理,包括请求处理、线程池管理、类加载、以及与Web服务器之间的通信。 ###…...

【web网页制作】html+css旅游家乡山西主题网页制作(3页面)【附源码】

山西旅游网页目录 涉及知识写在前面一、网页主题二、网页效果Page1、景点介绍Page2、酒店精选|出行攻略Page3、景色欣赏 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码4.1 主页模块源码4.2 源码获取方式 作者寄语 涉及知识 山西旅游主题网页制作&am…...

系统参数指标:QPS、TPS、PV、UV等

QPS QPS:Queries Per Second 是每秒查询率,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,即每秒的响应请求数,也即是最大吞吐能力。 TPS TPS:Tra…...

一入鸿蒙深似海,从此Spring是路人:鸿蒙开发面试题

详细内容请参考最新的官方鸿蒙文档,不保证时效性 写得不对的地方请多多指点,本文仅代表个人所学知识范围 联系方式QQ 1219723557,可一同交流学习 欢迎补充,希望能做一个汇总版本出来 1. 网络编程基本知识(较为简单&…...

【Python】使用OPC UA创建数据服务器

目录 准备工作服务器设置创建或获取节点设置节点值启动服务器查看服务器客户端总结 在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于…...

JavaScript(六)-高级篇

文章目录 作用域局部作用域全局作用域作用域链JS垃圾回收机制闭包变量提升 函数进阶函数提升函数参数动态参数多余参数 箭头函数 解构赋值数组解构对象解构 遍历数组forEach方法(重点)构造函数深入对象创建对象的三种方式构造函数实例成员 & 静态成员…...

速盾:游戏cdn什么意思

CDN(Content Delivery Network)是指内容分发网络,它是由一组位于世界各地的服务器组成的网络,用于将内容有效地传输给用户。游戏CDN,顾名思义,就是用于游戏内容分发的网络。 在传统的网络传输模式中&#…...

数据库-Redis(11)

目录 51.什么是Redis事务? 52.Redis事务相关命令? 53.Redis事务的三个阶段?...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...