import numpy as np
import torch
a=np.array([1.,2.,3.],dtype=np.float32)
shared=torch.from_numpy(a)
copied=torch.tensor(a)
a[0]=9
assert shared[0].item()==9 and copied[0].item()==1
independent=shared.clone()
shared[1]=7
assert independent[1].item()==2
X=torch.tensor([[1.,2.],[3.,4.],[5.,6.]])
W=torch.tensor([[2.],[1.]])
y=X@W+torch.tensor([.5])
assert y.shape==(3,1)
np.testing.assert_allclose(y.numpy().ravel(),[4.5,10.5,16.5])
assert (X*torch.tensor([2.,1.])).shape==(3,2)
print('device=',X.device,'dtype=',X.dtype,'shape=',tuple(y.shape))
print('shared=',shared.tolist(),'copied=',copied.tolist(),'prediction=',y.tolist())
