def __init__(self,nIn=700, nHidden=500, corruption_level=0.1,id="", initial_w=None, initial_b=None,input=None, input_type="matrix", output=None, output_type="matrix",cost_function=CrossEntroyCostFunction): self.corruption_level = corruption_level self.id=id self.nIn=nIn self.nHidden=nHidden ilayer = DenoisingLayer(numNodes=nIn, ltype = Layer.Layer_Type_Input, id=id+"0", corruption_level=corruption_level) hlayer = Layer(numNodes=nHidden, ltype = Layer.Layer_Type_Hidden, id=id+"1") olayer = Layer(numNodes=nIn, ltype = Layer.Layer_Type_Output, id=id+"2") # declare nnnet iw = None ib=None if initial_w != None: iw = [initial_w,initial_w.T] if initial_b != None: ib = [initial_b, None] NNNet.__init__(self,[ilayer, hlayer, olayer],initial_w=iw, initial_b=ib, cost_function=cost_function, auto_create_connection=True, input=input, output=output, input_type=input_type, output_type=output_type) # change parameter constraint conn1 = self.connections[0] conn2 = self.connections[1] self.params.remove(conn2.W) conn2.W = conn1.W.T self.y=self.x self.connect(self.x)
class AutoEncoder1: def __init__(self, nIn=700, nHidden=500): # declare layers ilayer = Layer(numNodes=nIn, ltype = Layer.Layer_Type_Input, id="0") hlayer = Layer(numNodes=nHidden, ltype = Layer.Layer_Type_Hidden, id="1") olayer = Layer(numNodes=nIn, ltype = Layer.Layer_Type_Output, id="2") # declare nnnet self.net = NNNet(ilayer, hlayer, olayer, cost_function=CrossEntroyCostFunction) # change parameter constraint conn1 = self.net.connections[0] conn2 = self.net.connections[1] self.net.params.remove(conn2.W) conn2.W = conn1.W.T def fit(self, train_data, batch_size, training_epochs, learning_rate): self.net.fit(train_data, train_data, batch_size, training_epochs, learning_rate) image = Image.fromarray( tile_raster_images(X=self.net.connections[0].W.get_value(borrow=True).T, img_shape=(28, 28), tile_shape=(10, 10), tile_spacing=(1, 1))) image.save('test_ae.png')
def fit(self, train_data, batch_size, training_epochs, learning_rate): NNNet.fit(self, train_data, train_data, batch_size, training_epochs, learning_rate) image = Image.fromarray( tile_raster_images(X=self.connections[0].W.get_value(borrow=True).T, img_shape=(28, 28), tile_shape=(10, 10), tile_spacing=(1, 1))) image.save('test_ae1.png')
def __init__(self, layers, size_output_layer=100, activate_function=TanhOutputFunction, cost_function=SquaredErrorCostFunction, input=None, extend_input=None, input_type="matrix", output=None, id=""): NNNet.__init__(self, layers=layers, cost_function=cost_function, input=input, output=output, input_type=input_type, output_type="vector") for i in range(len(layers)): self.layers[i].id = id + str(i) if layers[len(layers)-1].ltype != Layer.Layer_Type_Output: output_layer = Layer(numNodes=size_output_layer, ltype = Layer.Layer_Type_Output, id=id+str(len(layers))) self.layers.append(output_layer) rng = np.random.RandomState(123) for i in range(len(self.layers)-1): c = None if i <len(self.layers)-2: c = self.createConnection(self.layers[i],self.layers[i+1], of = activate_function) else: c = self.createConnection(self.layers[i],self.layers[i+1], of = SoftmaxOutputFunction, otype=Connection.Output_Type_SoftMax) self.connections.append(c) self.params=self.params+c.params if extend_input is None: if input_type == "matrix": self.x_extend = T.matrix(name='extend_input') if input_type == "vector": self.x = T.vector(name='extend_input') else: self.x_extend = extend_input self.layers[len(layers)-2].extend=self.x_extend self.connect(self.x)
def fit(self, train_data, batch_size, training_epochs, learning_rate, knowledge=None, l=None, llamda=None): if l is not None: self.setRegularization(l, llamda) self.knowledge=knowledge NNNet.fit(self, train_data, train_data, batch_size, training_epochs, learning_rate) image = Image.fromarray( tile_raster_images(X=self.connections[0].W.get_value(borrow=True).T, img_shape=(np.sqrt(self.nIn), np.sqrt(self.nIn)), tile_shape=(10, 10), tile_spacing=(1, 1))) image.save('test'+self.id+ '.png')
def __init__(self, nIn=700, nHidden=500): # declare layers ilayer = Layer(numNodes=nIn, ltype = Layer.Layer_Type_Input, id="0") hlayer = Layer(numNodes=nHidden, ltype = Layer.Layer_Type_Hidden, id="1") olayer = Layer(numNodes=nIn, ltype = Layer.Layer_Type_Output, id="2") # declare nnnet NNNet.__init__(self, [ilayer, hlayer, olayer], cost_function=CrossEntroyCostFunction, auto_create_connection=True) # change parameter constraint conn1 = self.connections[0] conn2 = self.connections[1] self.params.remove(conn2.W) conn2.W = conn1.W.T self.connect(self.x)