コード例 #1
0
ファイル: func.py プロジェクト: christopheryuh/tensorgrad
def concat(tensors,axis=0):
    """Concatenate the tensors along the given axis"""
    tensors = [t if isinstance(t, engine.Tensor) else engine.Tensor(t) for t in tensors]
    out = engine.Tensor(np.concatenate([t.data for t in tensors], axis=axis),_children=tensors, op='concatenate')

    def _backward():
        st = 0
        for t in enumerate(tensors):
            indexing = [slice(st, st + d) if i == axis else slice(0,d) for i, d in enumerate(t.shape)]
            t.grad += out.grad[indexing]
            st += t.shape[axis]
    out._backward = _backward
    return  out
コード例 #2
0
ファイル: func.py プロジェクト: christopheryuh/tensorgrad
def assign(x, indexing, y):
    y = y if isinstance(y, engine.Tensor) else engine.Tensor(y)
    data = x.data.copy()
    data[indexing] = y.data
    out = engine.Tensor(data, _children=(x, y), op='set item',)

    def _backward():
        y.grad += out.grad[indexing]
        gradient = out.grad.copy()
        x.grad += gradient
        x.grad[indexing] = 0.

    out._backward = _backward

    return out
    
コード例 #3
0
ファイル: func.py プロジェクト: christopheryuh/tensorgrad
def glorot_uniform(fan_in, fan_out, **kwargs):

    limit = math.sqrt(6 / (fan_in + fan_out))

    return engine.Tensor(np.random.uniform(-limit, limit, **kwargs))
コード例 #4
0
ファイル: func.py プロジェクト: christopheryuh/tensorgrad
def random(*args,**kwargs):
    return engine.Tensor(np.random.uniform(*args,**kwargs))
コード例 #5
0
ファイル: func.py プロジェクト: christopheryuh/tensorgrad
def arange(*args, **kwargs):
    return engine.Tensor(np.arange(*args, **kwargs))
コード例 #6
0
ファイル: func.py プロジェクト: christopheryuh/tensorgrad
def zeros(*args, **kwargs):
    return engine.Tensor(np.zeros(*args,**kwargs))\
コード例 #7
0
ファイル: func.py プロジェクト: christopheryuh/tensorgrad
def empty(*args,**kwargs):
    return engine.Tensor(np.empty(*args,**kwargs))