当前位置: 首页 > 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事务的三个阶段?...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...