Beispiel #1
0
    def __init__(self, input_size, hidden_size, output_size):
        # init para
        weight_init_std = 0.01
        self.params = {}
        self.params['W1'] = weight_init_std * np.random.randn(
            input_size, hidden_size)
        self.params['b1'] = np.zeros(hidden_size)
        self.params['gamma1'] = np.ones(hidden_size)
        self.params['beta1'] = np.zeros(hidden_size)
        self.params['W2'] = weight_init_std * np.random.randn(
            hidden_size, output_size)
        self.params['b2'] = np.zeros(output_size)

        # create layers
        self.layers = OrderedDict()
        self.layers['Affine1'] = layers.Affine(self.params['W1'],
                                               self.params['b1'])
        self.layers['BatchNorm1'] = layers.BatchNormalization(
            self.params['gamma1'], self.params['beta1'])
        self.layers['Relu1'] = layers.Relu()
        self.layers['Affine2'] = layers.Affine(self.params['W2'],
                                               self.params['b2'])

        self.lossLayer = layers.SoftmaxCrossEntropy(class_num=10)

        self.loss_list = []
Beispiel #2
0
    def __init__(self,
                 input_size,
                 hidden_size_list,
                 output_size,
                 activation='relu',
                 weight_init_std='relu',
                 weight_decay_lambda=0,
                 use_dropout=False,
                 dropout_ratio=0.5,
                 use_batchnorm=False):
        self.input_size = input_size
        self.output_size = output_size
        self.hidden_size_list = hidden_size_list
        self.hidden_layer_num = len(hidden_size_list)
        self.use_dropout = use_dropout
        self.weight_decay_lambda = weight_decay_lambda
        self.use_batchnorm = use_batchnorm
        self.params = {}

        # 重みの初期化
        self.__init_weight(weight_init_std)

        # レイヤの生成
        activation_layer = {'sigmoid': layers.Sigmoid, 'relu': layers.Relu}
        self.layers = OrderedDict()
        for idx in range(1, self.hidden_layer_num + 1):
            self.layers['Affine' + str(idx)] = layers.Affine(
                self.params['W' + str(idx)], self.params['b' + str(idx)])
            if self.use_batchnorm:
                self.params['gamma' + str(idx)] = np.ones(
                    hidden_size_list[idx - 1])
                self.params['beta' + str(idx)] = np.zeros(
                    hidden_size_list[idx - 1])
                self.layers['BatchNorm' +
                            str(idx)] = layers.BatchNormalization(
                                self.params['gamma' + str(idx)],
                                self.params['beta' + str(idx)])

            self.layers['Activation_function' +
                        str(idx)] = activation_layer[activation]()

            if self.use_dropout:
                self.layers['Dropout' +
                            str(idx)] = layers.Dropout(dropout_ratio)

        idx = self.hidden_layer_num + 1
        self.layers['Affine' + str(idx)] = layers.Affine(
            self.params['W' + str(idx)], self.params['b' + str(idx)])

        self.last_layer = layers.SoftmaxWithLoss()
Beispiel #3
0
    def __init__(self,
                 input_size,
                 hidden_size_list,
                 output_size,
                 activation='relu',
                 weight_init_std='relu',
                 weight_decay_lambda=0.0,
                 use_dropout=False,
                 dropout_ratio=0.5,
                 use_batchnorm=False):
        self.input_size = input_size
        self.output_size = output_size
        self.hidden_size_list = hidden_size_list
        self.hidden_layer_num = len(hidden_size_list)
        self.weight_decay_lambda = weight_decay_lambda
        self.use_dropout = use_dropout
        self.use_batchnorm = use_batchnorm
        self.params = {}

        # weights initialization
        self.__init_weight(weight_init_std)

        # generate layers
        activation_layer = {'sigmoid': layers.Sigmoid, 'relu': layers.Relu}
        self.layers = OrderedDict()
        for idx in range(1, self.hidden_layer_num + 1):
            self.layers['Affine' + str(idx)] = layers.Affine(
                self.params['W' + str(idx)], self.params['b' + str(idx)])
            if self.use_batchnorm:
                self.layers['BatchNorm' +
                            str(idx)] = layers.BatchNormalization(
                                self.params['gamma' + str(idx)],
                                self.params['beta' + str(idx)])
            self.layers['Activation' +
                        str(idx)] = activation_layer[activation]()
            if self.use_dropout:
                self.layers['Dropout' +
                            str(idx)] = layers.Dropout(dropout_ratio)
        # last Affine layer need no Activation & Batch Norm
        idx = self.hidden_layer_num + 1
        self.layers['Affine' + str(idx)] = layers.Affine(
            self.params['W' + str(idx)], self.params['b' + str(idx)])

        # self.last_layer = layers.SoftmaxCrossEntropy()
        self.last_layer = layers.MSE()
        # dict to save activation layer output
        self.activation_dict = OrderedDict()
    def __init__(self,
                 input_size,
                 hidden_size_list,
                 output_size,
                 activation='relu',
                 weight_init_std='relu',
                 weight_decay_lambda=0,
                 use_dropout=False,
                 dropout_ration=0.5,
                 use_batchnorm=False):

        self.input_size = input_size
        self.hidden_size_list = hidden_size_list
        self.hidden_layer_num = len(hidden_size_list)
        self.output_size = output_size

        self.weight_decay_lambda = weight_decay_lambda
        self.use_dropout = use_dropout
        self.use_batchnorm = use_batchnorm
        self.params = {}

        # 가중치 초기화
        self.__init_weight(weight_init_std)

        # 계층 생성
        activation_layer = {'sigmoid': layers.Sigmoid, 'relu': layers.Relu}
        self.layers = OrderedDict()

        # < 은닉층 생성 >
        # self.hidden_layer_num 개수만큼
        for idx in range(1, self.hidden_layer_num + 1):
            # (1) Affine 계층
            self.layers['Affine' + str(idx)] = layers.Affine(
                self.params['W' + str(idx)], self.params['b' + str(idx)])

            # (2) BatchNormalization 계층
            if self.use_batchnorm:
                # 각 계층별 배치 정규화 계층에서 사용할 매개변수 최기화
                # 원본 그대로에서 시작하는 것으로 초기화. 1배 확대(gamma), 이동 0(beta)
                self.params['gamma' + str(idx)] = np.ones(
                    hidden_size_list[idx - 1])  # 1
                self.params['beta' + str(idx)] = np.zeros(
                    hidden_size_list[idx - 1])  # 0
                self.layers['BatchNorm' +
                            str(idx)] = layers.BatchNormalization(
                                self.params['gamma' + str(idx)],
                                self.params['beta' + str(idx)])

            # (3) 활성화 함수
            self.layers['Activation_function' +
                        str(idx)] = activation_layer[activation]()

            # (4) Dropout 계층
            if self.use_dropout:
                self.layers['Dropout' +
                            str(idx)] = layers.Dropout(dropout_ration)

        # < 출력층 Affine 생성 >
        idx = self.hidden_layer_num + 1
        self.layers['Affine' + str(idx)] = layers.Affine(
            self.params['W' + str(idx)], self.params['b' + str(idx)])

        # < 출력층 생성 >
        # 출력층 활성화 함수로 Softmax, 손실함수로 cross_entropy_error 사용
        self.last_layer = layers.SoftmaxWithLoss()