Example #1
0
    def render(self, is_lock):
        bimpy.indent(10)

        bimpy.text('- Plane')
        bimpy.same_line()
        bimpy_tools.help_marker(
            'generate with random points\n' \
            '* plane random: random on whole plane\n' \
            '* balanced random: balanced positive and negative samples'
        )

        bimpy.push_item_width(140)

        if bimpy.begin_combo('strategy##plane_random_generator',
                             self._select_strategy):
            for item in self._strategy_list:
                is_selected = bimpy.Bool(self._select_strategy == item)

                if bimpy.selectable(item, is_selected) and not is_lock:
                    self._select_strategy = item

                if is_selected.value:
                    bimpy.set_item_default_focus()
            bimpy.end_combo()

        bimpy.pop_item_width()
        bimpy.unindent(10)
Example #2
0
    def render(self, is_lock):
        bimpy.set_next_tree_node_open(True, bimpy.Condition.FirstUseEver)
        
        if not bimpy.tree_node('convex points##convex_component'):
            return
        
        bimpy.same_line()
        bimpy_tools.help_marker('Convex points should be presented in counter-clockwise order')

        flags = bimpy.InputTextFlags.EnterReturnsTrue
        if is_lock:
            flags |= bimpy.InputTextFlags.ReadOnly
        
        last_convex_number_value = self._convex_number.value

        if bimpy.input_int('number##convex_component', self._convex_number, 1, 1, flags):
            self._convex_number.value = max(3, self._convex_number.value)
            if last_convex_number_value > self._convex_number.value:
                self._convex_data = self._convex_data[:self._convex_number.value]  # cut back points
            else:
                self._convex_data.extend([
                    [bimpy.Float(0), bimpy.Float(0)] 
                    for _ in range(last_convex_number_value, self._convex_number.value)
                ])
        
        # show convex value setting
        bimpy.set_next_tree_node_open(self._convex_number.value < 10, bimpy.Condition.FirstUseEver)

        if bimpy.tree_node('convex value ({})##convex_component'.format(self._convex_number.value)):
            for index in range(self._convex_number.value):
                bimpy.push_item_width(210)
                bimpy.input_float2(
                    '{:<3d}'.format(index),
                    self._convex_data[index][0],
                    self._convex_data[index][1],
                    flags=flags
                )
                bimpy.pop_item_width()
            bimpy.tree_pop()
        
        # draw part
        bimpy.new_line()
        if bimpy.button('draw convex##convex_component') and not is_lock:
            self._convex_data_backup = [[item[0].value, item[1].value]
                                        for item in self._convex_data]
            self._convex_draw_flag = True
            self._convex_data = []
            self._convex_number.value = 0

        bimpy.tree_pop()
Example #3
0
    def render(self, is_lock):
        bimpy.indent(10)

        bimpy.text('- SGD')
        bimpy.same_line()
        bimpy_tools.help_marker('torch.optim.SGD')

        flags = bimpy.InputTextFlags.EnterReturnsTrue
        if is_lock:
            flags |= bimpy.InputTextFlags.ReadOnly

        bimpy.push_item_width(120)

        if bimpy.input_float('lr##sgd_optimizer', self._lr, flags=flags):
            self._lr.value = max(0.0, self._lr.value)

        if bimpy.input_float('momentum##sgd_optimizer',
                             self._momentum,
                             flags=flags):
            self._momentum.value = max(0.0, self._momentum.value)

        if bimpy.input_float('dampening##sgd_optimizer',
                             self._dampening,
                             flags=flags):
            self._dampening.value = max(0.0, self._dampening.value)

        if bimpy.input_float('weight_decay##sgd_optimizer',
                             self._weight_decay,
                             flags=flags):
            self._weight_decay.value = max(0.0, self._weight_decay.value)

        if bimpy.checkbox('nesterov##sgd_optimizer', self._nesterov):
            self._hint_nesterov = False

        if self._nesterov.value:
            if self._momentum.value == 0 or self._dampening.value > 0:
                self._nesterov.value = False
                self._hint_nesterov = True

        bimpy.same_line()
        bimpy_tools.help_marker(
            'Nesterov momentum requires a momentum and zero dampening',
            self._hint_nesterov)

        bimpy.pop_item_width()
        bimpy.unindent(10)
Example #4
0
    def render(self, is_lock):
        bimpy.indent(10)

        bimpy.text('- Linear layer init')
        bimpy.same_line()
        bimpy_tools.help_marker(
            'Initializer used in torch.nn.Linear, use Kaiming uniform')

        bimpy.push_item_width(120)

        flags = bimpy.InputTextFlags.EnterReturnsTrue
        if is_lock:
            flags |= bimpy.InputTextFlags.ReadOnly

        if bimpy.input_float('a##sgd_optimizer', self._a, flags=flags):
            self._a.value = max(0.0, self._a.value)

        if bimpy.begin_combo('mode##linear_layer_init', self._select_mode):
            for item in self._mode_list:
                is_selected = bimpy.Bool(self._select_mode == item)

                if bimpy.selectable(item, is_selected) and not is_lock:
                    self._select_mode = item

                if is_selected.value:
                    bimpy.set_item_default_focus()
            bimpy.end_combo()

        if bimpy.begin_combo('nonlinearity##linear_layer_init',
                             self._select_nonlinearity):
            for item in self._nonlinearity_list:
                is_selected = bimpy.Bool(self._select_nonlinearity == item)

                if bimpy.selectable(item, is_selected) and not is_lock:
                    self._select_nonlinearity = item

                if is_selected.value:
                    bimpy.set_item_default_focus()
            bimpy.end_combo()

        bimpy.pop_item_width()
        bimpy.unindent(10)
Example #5
0
    def render(self, is_lock):
        bimpy.indent(10)

        bimpy.text('- MSE loss')
        bimpy.same_line()
        bimpy_tools.help_marker('torch.nn.MSELoss')

        bimpy.push_item_width(120)

        if bimpy.begin_combo('reduction##mse_loss_fn', self._select_redution):
            for item in self._reduction_list:
                is_selected = bimpy.Bool(self._select_redution == item)

                if bimpy.selectable(item, is_selected) and not is_lock:
                    self._select_redution = item

                if is_selected.value:
                    bimpy.set_item_default_focus()
            bimpy.end_combo()
        
        bimpy.pop_item_width()
        bimpy.unindent(10)
Example #6
0
    def render(self, is_lock):
        bimpy.indent(10)

        bimpy.text('- Adam')
        bimpy.same_line()
        bimpy_tools.help_marker('torch.optim.Adam')

        flags = bimpy.InputTextFlags.EnterReturnsTrue
        if is_lock:
            flags |= bimpy.InputTextFlags.ReadOnly

        bimpy.push_item_width(140)

        if bimpy.input_float('lr##adam_optimizer', self._lr, flags=flags):
            self._lr.value = max(0.0, self._lr.value)

        if bimpy.input_float2('momentum##adam_optimizer',
                              self._betas_first,
                              self._betas_second,
                              flags=flags):
            self._betas_first.value = max(0.0, self._betas_first.value)
            self._betas_second.value = max(0.0, self._betas_second.value)

        if bimpy.input_float('eps##adam_optimizer',
                             self._eps,
                             decimal_precision=8,
                             flags=flags):
            self._dampening.value = max(0.0, self._eps.value)

        if bimpy.input_float('weight_decay##adam_optimizer',
                             self._weight_decay,
                             flags=flags):
            self._weight_decay.value = max(0.0, self._weight_decay.value)

        bimpy.checkbox('amsgrad##adam_optimizer', self._amsgrad)

        bimpy.pop_item_width()
        bimpy.unindent(10)
    def render(self, is_lock):
        bimpy.indent(10)

        bimpy.text('- Raw Point')
        bimpy.same_line()
        bimpy_tools.help_marker('generate with raw points')

        bimpy.push_item_width(120)

        if bimpy.begin_combo('strategy##raw_point_generator',
                             self._select_strategy):
            for item in self._strategy_list:
                is_selected = bimpy.Bool(self._select_strategy == item)

                if bimpy.selectable(item, is_selected) and not is_lock:
                    self._select_strategy = item

                if is_selected.value:
                    bimpy.set_item_default_focus()
            bimpy.end_combo()

        bimpy.pop_item_width()
        bimpy.unindent(10)