def create(layer: Layer, instruction: Instruction): device = instruction.details[0] name = instruction.details[1] if device == "hub": ports_number = int(instruction.details[2]) if ports_number < 1: print("\nWRONG PORTS NUMBER.") raise Exception elif device == "host": if len(instruction.details) > 2: print("\nWRONG CREATE HOST INSTRUCTION FORMAT.") raise Exception ports_number = 1 else: print("\nUNRECOGNIZED DEVICE TYPE.") raise Exception layer.create(device, name, ports_number) write( instruction.time, "create, device={}, name={}{}\n".format( device, name, ", ports_number={}".format(ports_number) if device == ("hub" or "switch") else "")) file = open("output/devices.bin", 'a') file.write("device={}, name={}, ports_number={}\n".format( device, name, ports_number)) file.close()
def build_network(self, layer_settings=[], activation=Method.Sigmoid): self.layers = [] # 每颗神经元的Activation Function都可以自订,这边范例皆使用Sigmoid activations = [] for setting in layer_settings: nets_activation = [] for index in range(0, setting): nets_activation.append(activation) activations.append(nets_activation) # 取出每一个 Layer 要有几颗神经元(Net)的设定 for layer_index in range(0, len(layer_settings)): new_layer = Layer.create(activations[layer_index]) self.layers.append(new_layer) # 设定将隐藏层(Hidden Layers), 以及输出层(Output Layer)互相连结在一起 layer_count = len(self.layers) for from_layer_index in range(0, layer_count - 1): from_layer = self.layers[from_layer_index] to_layer = self.layers[from_layer_index + 1] # 从哪一层到哪一层,最小权重随机范围,最大权重随机范围 from_layer.link_layer(to_layer, self.random_min, self.random_max)