接下来创建输出层Output layer。
将之前创建Node节点的代码复制过来进行修改,作为输出层,给神经元节点命名的时候命名为Output,输出层的节点是结果,显然不是Bias,因此设置输出层的node的_is_bias_unit为False值。
这样我们初步创建了神经元网络节点。 以下是本节已经编写的创建神经元网络节点的代码版本(NetworkStructure.py(v1)),代码中创建了输入层的Bias节点、隐藏层所有的Bias节点、隐藏层的所有神经元节点、输出层的节点,但这里还没有创建输入层的节点,后续我们将进行迭代完善,加上这部分代码。
Create_AI_Framework_In5Classes(Class1)版本的NetworkStructure.py(v1):
# -*- coding: utf-8 -*-
#导入要使用的Node类
from entity.Node import Node
class NetworkStructure:
#创建整个神经网络的所有节点
def create_nodes(num_of_features, hidden_layers):
nodes = []
nodeIndex = 0 #Neuron的ID
#Input layer
#Bias Unit
node = Node()
node.set_index(nodeIndex)
node.set_label("+1")
node.set_is_bias_unit(True)
nodes.append(node)
nodeIndex = nodeIndex + 1
print(node.get_label(), "\t", end = '')
print("")
#Hidden layer
for i in range(len(hidden_layers)):
print("Hidden layer creation: ", end = ' ')
#Bias Unit
node = Node()
node.set_index(nodeIndex)
node.set_label("+1")
node.set_is_bias_unit(True)
nodes.append(node)
nodeIndex = nodeIndex + 1
print(node.get_label(), "\t", end = '')
#创建该layer的Neurons
for j in range(hidden_layers[i]):
#创建该layer内部的Neuron
node = Node()
node.set_index(nodeIndex)
node.set_label("+1")
node.set_is_bias_unit(False)
nodes.append(node)
nodeIndex = nodeIndex + 1
print(node.get_label(), "\t", end = '')
print("")
#Output layer
node = Node()
node.set_index(nodeIndex)
node.set_label("Output")
node.set_is_bias_unit(False)
nodes.append(node)
nodeIndex = nodeIndex + 1
print("Output layer: ", node.get_label())
return nodes