Team Ai
Datasetpublic

OneScience-Group/ShapeNetCar

ShapeNetCar Dataset Description The ShapeNetCar dataset comes from the paper Learning Three-dimensional Flow for Interactive Aerodynamic Design by Umetani and Bickel, published in ACM Transactions on Graphics (SIGGRAPH 2018). Based on three-dimensional car geometries from ShapeNet, the dataset uses CFD simulations to obtain velocity fields around the vehicles, surface pressure, and drag coefficients. It supports research on rapidly predicting aerodynamic physical… See the full description on the dataset page: https://huggingface.co/datasets/OneScience-Group/ShapeNetCar.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes1.9kdownloads
learn_linear.py122 linesDownload Raw Back to linear_regression_code
1import os,sys2import numpy3import random4import math5import torch6 7def splitScalar_NFold(X,Y,N_fold):8	nt = X.shape[0]9	assert Y.shape[0] == nt10 11	aX = []12	aY = []13	for j in range(N_fold):14		aX.append(X[j])15		aY.append(numpy.array([Y[j]]))16	for i in range(N_fold,nt):17		j = random.randint(0,N_fold-1)18		aX[j] = numpy.vstack( (aX[j],X[i,:]) )19		aY[j] = numpy.append(aY[j],Y[i])		20	return aX,aY21 22def split_train_validate(aX,aT,ind_fold):23	N = len(aX)24	m = aX[0].shape[1]25	Xt = numpy.empty((0,m))26	Tt = numpy.empty((0,))27	Xv = numpy.empty((0,m))28	Tv = numpy.empty((0,))29	for j in range(N):30		if j == ind_fold:31			Xv = numpy.vstack((Xv,aX[j]))32			Tv = numpy.append(Tv,aT[j])33		else:34			Xt = numpy.vstack((Xt,aX[j]))35			Tt = numpy.append(Tt,aT[j])	36	Xt = Xt.astype(numpy.float32)37	Tt = Tt.astype(numpy.float32)	38	Xv = Xv.astype(numpy.float32)39	Tv = Tv.astype(numpy.float32)	40	return Xt,Tt,Xv,Tv41 42def LeastSquare_SVD(X,Y,alpha0):43	nt = X.shape[0]44	one = numpy.ones((nt,1))45	X1 = numpy.hstack((X,one))46	Ux, Dx, Vx = numpy.linalg.svd(X1, full_matrices=False)47	nt0 = Dx.shape[0]48	for i in range(nt0):49		x = Dx[i]50		Dx[i] = x/(x*x+alpha0)51	DxInv = numpy.diag(Dx)52	W0 = numpy.dot(numpy.dot(Vx.T, DxInv), Ux.T)53	W1 = Y54	print("W0: "+str(W0.shape))55	print("w1: "+str(W1.shape))56	return W0,W157 58def LeastSquare_SVD_Eval(X,W0,W1):59	nt = X.shape[0]60	one = numpy.ones((nt,1))61	X1 = numpy.hstack((X,one))62	XW0 = numpy.dot(X1,W0)63	XW0W1 = numpy.dot(XW0,W1)64	return XW0W165 66 67def loadXT():68	X = numpy.load("I2_0.npy")	69	X = numpy.vstack((X,numpy.load("I2_1.npy")))70	X = numpy.vstack((X,numpy.load("I2_2.npy")))71	X = numpy.vstack((X,numpy.load("I2_3.npy")))72	X = numpy.vstack((X,numpy.load("I2_4.npy")))73	X = numpy.vstack((X,numpy.load("I2_5.npy")))74	X = numpy.vstack((X,numpy.load("I2_6.npy")))75	X = numpy.vstack((X,numpy.load("I2_7.npy")))76	X = numpy.vstack((X,numpy.load("I2_8.npy")))77 78	T = numpy.load("Cd_0.npy")79	T = numpy.append(T, numpy.load("Cd_1.npy"))	80	T = numpy.append(T, numpy.load("Cd_2.npy"))	81	T = numpy.append(T, numpy.load("Cd_3.npy"))	82	T = numpy.append(T, numpy.load("Cd_4.npy"))	83	T = numpy.append(T, numpy.load("Cd_5.npy"))	84	T = numpy.append(T, numpy.load("Cd_6.npy"))	85	T = numpy.append(T, numpy.load("Cd_7.npy"))	86	T = numpy.append(T, numpy.load("Cd_8.npy"))	87	return X,T88 89def main():90	X,T = loadXT()91	assert( X.shape[0] == T.shape[0] )92 93	N_fold = 994	N_sample = 495	ES = []96	for ind_sample in range(N_sample):97		aX,aT = splitScalar_NFold(X,T,N_fold)98		for ind_fold in range(N_fold):99			print("n-fold split",ind_sample,ind_fold,aX[ind_fold].shape," ",aT[ind_fold].shape)100		E = []101		for ind_fold in range(N_fold):102			Xt,Tt,Xv,Tv = split_train_validate(aX,aT,ind_fold)103			print(ind_sample,ind_fold)104			print("train size:",Xt.shape,Tt.shape)105			print("validate size:",Xv.shape,Tv.shape)			106			W0,W1 = LeastSquare_SVD(Xt,Tt,0.8)107			Yv =  LeastSquare_SVD_Eval(Xv,W0,W1)108			Ev = Yv-Tv109			E.extend(Ev)110		E = numpy.asarray(E)111		assert E.shape[0] == X.shape[0]112		stdE = numpy.linalg.norm(E)113		stdE = math.sqrt(stdE*stdE/E.shape[0])114		print("standard deviation",stdE)115		ES.append(stdE)116	ES = numpy.asarray(ES)117	numpy.savetxt("StandardDeviations"+".txt",ES)118 119 120if __name__ == "__main__":121	main()122