def test_zero_system(self): net = NeuralNet(3, 2, 4, 1, seed=0) net.weights = [ np.zeros((3, 4)), np.zeros((4, 4)), np.zeros((4, 4)), np.zeros((4, 1)) ] inpt = np.asarray([1, 1, 1]) print(net.forward(inpt)) for layer in net.forward(inpt)[1:]: for neuron in layer: assert neuron == 0.5
def __init__(self): super().__init__() self.setupUi(self) self.scene = GraphicScene(self) self.graphicsView.setScene(self.scene) self.graphicsView.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.net = NeuralNet(1, 1, 1, 0) self.checkButton.clicked.connect(self.netCheck) self.clearButton.clicked.connect(self.clearGraphicsScene) self.trainButton.clicked.connect(self.trainNetworkWithCurrentData) self.addTrainDataButton.clicked.connect(self.addTrainDataToFile) self.saveWeigthsButton.clicked.connect(self.saveWeights)
def __init__(self): self.queue = Queue() with open('config.json') as config_file: self.config = json.load(config_file) self.model = NeuralNet(self.config) with open('params.json') as f: self.load_params(json.load(f)) self.params = self.config['optimizer']['parameters'] self.params['params'] = self.model.parameters() self.parameter_lengths = list( map(lambda x: x.data.nelement(), self.model.parameters())) self.optimizer = utils.create_object(**self.config['optimizer']) self.accuracy = None self.lock = Lock() self.changed = True self.params_updated = False self.loader = utils.get_data() self.convert_params() self.compute_accuracy() Thread(target=self.update_model, daemon=True).start()
def main(): app = QtWidgets.QApplication(sys.argv) window = Window() window.show() #create net n = 50 input_nodes = n * n hidden_nodes = int(n * n / 10) output_nodes = 10 learning_rate = 0.3 net = NeuralNet(input_nodes, hidden_nodes, output_nodes, learning_rate) wih_data_file = open("wih.txt", 'r') wih_data_list = wih_data_file.readlines() wih_data_file.close() who_data_file = open("who.txt", 'r') who_data_list = who_data_file.readlines() who_data_file.close() if (len(wih_data_list) == len(net.wih) and len(who_data_list) == len(net.who)): for i in range(len(wih_data_list)): string_values = wih_data_list[i].split(',') float_values = numpy.asfarray(string_values) net.wih[i] = float_values for i in range(len(who_data_list)): string_values = who_data_list[i].split(',') float_values = numpy.asfarray(string_values) net.who[i] = float_values #set net to GUI app window.setupNeuralNet(net) app.exec_()
import numpy as np from net import NeuralNet net = NeuralNet(2, 1, 3, 1, 342047) output_dot = False inputs = np.array([[1, 1], [0, 0], [1, 0], [0, 1]]) outputs = np.array([[0], [0], [1], [1]]) for i in xrange(80000): if i % 100 == 0: print("epoch: {}\terror: {}".format(i, net.error(inputs, outputs))) if output_dot: open("/tmp/xor{:05d}graph".format(i), mode="w").write(net.output_dot((inputs, outputs))) net.learn(inputs, outputs, 0.05) print("trained") print("error: {}".format(net.error(inputs, outputs))) for inpt in inputs: print(net.forward(inpt))
import numpy as np from net import NeuralNet nn = NeuralNet([2, 3, 1]) nn.train(np.array([[1, 0], [0, 0]]), np.array([[1], [0]]))
def get_net(config_layers): """ Given the layers section in a config file, return a network with the described layers !!Not yet support for Convolutional layers """ layer_names = [] linear_layer_sizes = [] init_scale = 0.1 c = 0 conv_params = [] for i, key in enumerate(config_layers): layer_list = config_layers[key].split(sep=' ') if key == "init_scale": init_scale = float(config_layers[key]) else: layer_names.append(layer_list[0]) if "size" in layer_list: index = layer_list.index("size") + 1 sizes = layer_list[index].split(sep=',') sizes = [int(sizes[0]), int(sizes[1])] linear_layer_sizes.append(sizes) elif "ConvolutionLayer" in layer_list: index_size = layer_list.index("input_size") + 1 if "scale" in layer_list: index_scale = layer_list.index("scale") + 1 else: i_s = layer_list.index("s") + 1 i_p = layer_list.index("p") + 1 i_k = layer_list.index("k") + 1 index_channels_o = layer_list.index("channels_out") + 1 index_channels_i = layer_list.index("channels_in") + 1 index_dim = layer_list.index("dim") + 1 conv_params.append({ "is": int(layer_list[index_size]), "ci": int(layer_list[index_channels_i]), "co": int(layer_list[index_channels_o]), "dim": int(layer_list[index_dim]) }) if "scale" in layer_list: conv_params[-1]["sc"] = float(layer_list[index_scale]) else: conv_params[-1]["spk"] = { "s": int(layer_list[i_s]), "p": int(layer_list[i_p]), "k": int(layer_list[i_k]) } layers = [] for layer_name in layer_names: if layer_name == "LinearLayer": sizes = linear_layer_sizes.pop(0) layers.append(LinearLayer(sizes[0], sizes[1], init_scale)) elif layer_name == "ConvolutionLayer": params = conv_params.pop(0) if "sc" in params: valid_configs = get_cnn_configurations(params["is"], params["sc"])[0] layers.append( ConvolutionLayer(params["ci"], params["co"], valid_configs["f"], params["is"], params["dim"], valid_configs["s"], valid_configs["p"], init_scale)) else: layers.append( ConvolutionLayer(params["ci"], params["co"], params["spk"]["k"], params["is"], params["dim"], params["spk"]["s"], params["spk"]["p"], init_scale)) else: layers.append(eval(layer_name)()) net = NeuralNet(layers) return net