Beispiel #1
0
 def __init__(self):
     super().__init__()
     self.name = 'check_attribute_value'
     self.args.add_arg('actual_value', values.NoneValue())
     self.args.add_arg('expected_value', values.NoneValue())
     self.args.add_arg('func_name', values.NoneValue())
     self.args.add_arg('arg_name', values.NoneValue())
 def __init__(self):
     super().__init__()
     self.name = 'cumsum'
     self.args.add_arg('a', values.NoneValue())
     self.args.add_arg('axis', values.NoneValue())
     self.args.add_arg('dtype', values.NoneValue())
     self.args.add_arg('out', values.NoneValue())
 def __init__(self):
     super().__init__()
     self.name = 'full'
     self.args.add_arg('shape', values.NoneValue())
     self.args.add_arg('fill_value', values.NoneValue())
     self.args.add_arg('dtype', values.NoneValue())
     self.args.add_arg('order', values.StrValue('C'))
    def __init__(self):
        super().__init__()
        self.name = 'array'

        self.args.add_arg('object', values.NoneValue())
        self.args.add_arg('dtype', values.NoneValue())
        self.args.add_arg('copy', values.BoolValue(True))
        self.args.add_arg('order', values.StrValue('K'))
        self.args.add_arg('subok', values.BoolValue(False))
        self.args.add_arg('ndmin', values.NumberValue(0))
    def vcall(self,
              module: 'values.Field',
              graph: 'graphs.Graph',
              inst: 'values.Object',
              args: 'functions.FunctionArgInput',
              option: 'vevaluator.VEvalContext' = None,
              line=-1):
        funcArgs = self.args.merge_inputs(inst, args)

        node = nodes.NodeCall(self, funcArgs, line)

        if inst.in_container:
            raise Exception('Invalid operation')

        old_v = inst.get_value()
        new_v = functions.generate_value_with_same_type(old_v)

        # estimate a type contained
        if old_v.has_constant_value():
            new_v.internal_value = list(old_v.internal_value)

        for v in funcArgs.inputs[1:]:
            new_v.append(v)

        # update value
        inst.revise(new_v)

        new_v.name = '@F.{}.{}'.format(line, self.name)
        node.set_outputs([new_v])

        graph.add_node(node)
        return values.NoneValue()
Beispiel #6
0
def generate_copied_value(value: 'values.Value'):
    assert(isinstance(value, values.Value))

    if isinstance(value, values.NumberValue):
        copied = values.NumberValue(value.internal_value)
        copied.dtype = value.dtype
        return copied

    if isinstance(value, values.TensorValue):
        copied = values.TensorValue()
        copied.value = value.value
        copied.shape = value.shape
        copied.dtype = value.dtype
        return copied

    if isinstance(value, values.ListValue):
        copied = values.ListValue()
        copied.dtype = value.dtype
        copied.vtype = value.vtype
        if value.internal_value is not None:
            copied.internal_value = value.internal_value.copy()
        return copied

    if isinstance(value, values.NoneValue):
        copied = values.NoneValue()
        return copied

    if isinstance(value, values.BoolValue):
        copied = values.BoolValue(value.internal_value)
        return copied

    if isinstance(value, values.StrValue):
        copied = values.StrValue(value.internal_value)
        return copied

    if isinstance(value, values.RangeValue):
        copied = values.RangeValue()
        return copied

    if isinstance(value, values.TupleValue):
        if value.internal_value is not None:
            copied = values.TupleValue(value.internal_value.copy())
        else:
            copied = values.TupleValue(value.internal_value)
        copied.dtype = value.dtype
        copied.vtype = value.vtype
        return copied

    if config.show_warnings:
        print('Unknown type {} is copied'.format(value))

    return values.Value()
Beispiel #7
0
def veval_ast_name_constant(astc: 'AstContext', local_field: 'values.Field',
                            graph: 'Graph'):
    '''
    Ex. True
    '''
    assert (isinstance(astc.nast, gast.gast.NameConstant))
    lineprop = utils.LineProperty(astc.lineno, astc.filename)
    ret = None
    if astc.nast.value == True:
        ret = values.ValueRef(values.BoolValue(True))
    if astc.nast.value == False:
        ret = values.ValueRef(values.BoolValue(False))
    if astc.nast.value is None:
        ret = values.ValueRef(values.NoneValue())

    name = values.create_ref_value_name_with_constant(ret)
    ret.name = name
    ret.get_value().name = name
    return ret
Beispiel #8
0
    def vcall(self,
              module: 'values.Field',
              graph: 'graphs.Graph',
              inst: 'values.Object',
              args: 'functions.FunctionArgInput',
              context: 'functions.VEvalContext' = None,
              line=-1):
        assert (inst is None)

        funcArgs = self.args.merge_inputs(inst, args)
        args = []
        for value in funcArgs.get_value().inputs:
            assert value.has_constant_value(
            ), "Arguments for elichika.flags were non-constant at %s" % line
            args.append(value.internal_value)

        if context is not None:
            context.flags_cache.append((self.name, args))

        return values.Object(values.NoneValue())
 def __init__(self):
     super().__init__()
     self.name = 'ceil'
     self.args.add_arg('x', values.NoneValue())
Beispiel #10
0
 def __init__(self):
     super().__init__()
     self.name = 'check_attribute_scalar'
     self.args.add_arg('value', values.NoneValue())
     self.args.add_arg('func_name', values.NoneValue())
     self.args.add_arg('arg_name', values.NoneValue())
Beispiel #11
0
def generate_value_with_same_type(value: 'values.Value', is_dummy_value = False, suffix_type = SuffixType.Unknown):
    assert(isinstance(value, values.Value))
    ret = None
    if isinstance(value, values.TensorValue):
        ret = values.TensorValue()
        ret.shape = value.shape
        ret.dtype = value.dtype

    elif isinstance(value, values.NumberValue):
        dtype = None
        if value.internal_value is None:
            dtype = value.dtype
        elif isinstance(value.internal_value, int):
            dtype = np.array(value.internal_value).dtype
        elif isinstance(value.internal_value, float):
            dtype = np.array(value.internal_value).dtype

        ret = values.NumberValue(None)
        ret.dtype = dtype

    elif isinstance(value, values.StrValue):
        ret = values.StrValue(None)

    elif isinstance(value, values.BoolValue):
        ret = values.BoolValue(None)

    elif isinstance(value, values.ListValue):
        ret = values.ListValue(None)
        ret.dtype = value.dtype
        ret.vtype = value.vtype

    elif isinstance(value, values.NoneValue):
        ret = values.NoneValue()

    elif isinstance(value, values.TupleValue):
        ret = values.TupleValue()
        ret.dtype = value.dtype
        ret.vtype = value.vtype

    elif isinstance(value, values.RangeValue):
        ret = values.RangeValue()

    elif isinstance(value, values.UnknownValue):
        ret = values.UnknownValue()

    elif ret is None and isinstance(value, values.Value):
        ret = values.Value()

    else:
        assert(False)

    assert(ret is not None)

    ret.is_dummy_value = is_dummy_value
    if suffix_type == SuffixType.Unknown:
        ret.name = value.name + '_st'
    elif suffix_type == SuffixType.Unused:
        ret.name = value.name + '_unused'
    elif suffix_type == SuffixType.Dummy:
        ret.name = value.name + '_dummy'
    elif suffix_type == SuffixType.Input:
        ret.name = value.name + '_in'
    else:
        assert(False)

    return ret
Beispiel #12
0

def return_NStepLSTM():
    list_tensor = values.ListValue()
    list_tensor.vtype = values.TensorValue
    return [values.TensorValue(), values.TensorValue(), list_tensor]


def return_NStepBiLSTM():
    list_tensor = values.ListValue()
    list_tensor.vtype = values.TensorValue
    return [values.TensorValue(), values.TensorValue(), list_tensor]


chainer_links[chainer.links.Linear] = ChainerLinkDefinition(
    args=[('self', values.NoneValue()), ('x', values.NoneValue()),
          ('n_batch_axes', values.NumberValue(1))],
    estimate_shape=estimate_linear_shape)
chainer_links[chainer.links.Convolution2D] = ChainerLinkDefinition(
    estimate_shape=estimate_convolution2D_shape)
chainer_links[chainer.links.ConvolutionND] = ChainerLinkDefinition(
    estimate_shape=estimate_convolutionND_shape)
chainer_links[chainer.links.BatchNormalization] = ChainerLinkDefinition(
    estimate_shape=estimate_batch_norm_shape)
chainer_links[chainer.links.NStepLSTM] = ChainerLinkDefinition(
    args=[('self', values.NoneValue()), ('hx', values.NoneValue()),
          ('cx', values.NoneValue()), ('xs', values.NoneValue())],
    estimate_shape=estimate_NStepLSTM_shape,
    get_ret=return_NStepLSTM)
chainer_links[chainer.links.NStepBiLSTM] = ChainerLinkDefinition(
    args=[('self', values.NoneValue()), ('hx', values.NoneValue()),
Beispiel #13
0
 def __init__(self):
     super().__init__()
     self.name = 'list'
     self.args.add_arg('value', values.ValueRef(values.NoneValue()))