def create_convnet(theta, is_tr=True): # input a0 = T.matrix("x") a00 = a0.reshape((a0.shape[0], 1, 28, 28)) # I: conv pool theta1 = [theta[0], theta[1]] sz1_pool = (2, 2) a1 = models.create_conv_pool_tanh(a00, theta1, sz1_pool) # II: conv pool theta2 = [theta[2], theta[3]] sz2_pool = (2, 2) a2 = models.create_conv_pool_tanh(a1, theta2, sz2_pool) # III: fc + dropout theta3 = [theta[4], theta[5]] if is_tr: a3 = models.create_dropout(models.create_linear_sigmoid(a2.flatten(2), theta3), trng=trng) else: a3 = models.create_dropout(models.create_linear_sigmoid(a2.flatten(2), theta3), trng=None) # IV: fc, output theta4 = [theta[6], theta[7]] a4 = models.create_linear(a3, theta4) return a0, a4
def create_mlp(theta, is_tr=True): # input layer x = T.matrix('x') # hidden layer I theta1 = (theta[0], theta[1]) if is_tr: a1 = models.create_dropout(models.create_linear_sigmoid(x, theta1), trng=trng) else: a1 = models.create_dropout(models.create_linear_sigmoid(x, theta1), trng=None) # hidden layer II theta2 = (theta[2], theta[3]) if is_tr: a2 = models.create_dropout(models.create_linear_sigmoid(a1, theta2), trng=trng) else: a2 = models.create_dropout(models.create_linear_sigmoid(a1, theta2), trng=None) # output layer theta3 = (theta[4], theta[5]) a3 = models.create_linear_sigmoid(a2, theta3) return x, a3