关于使用net.apply_feature_transform的归一化问题 #791
Unanswered
Little7776
asked this question in
Q&A
Replies: 1 comment 2 replies
-
Yes.
The two lines are overlapped. |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
博士您好
我尝试对板子的受力弯曲微分方程进行分析,现在遇到了一些困难
1.板子长宽a=480 ,b=240
我在设定好微分方程后,不知道是不是因为量级太大了所以输出效果很不好,还出现点的跳动情况。
2.之后我尝试用net.apply_feature_transform(lambda X: tf.concat([X[:,0:1]/a, X[:,1:2]/b], axis=1))对输
入进行归一化,得到波动图像,因此我认为归一化有比较好的效果,但是依旧不满足用matlab和有限元验证的结果,
matlab结果
使用net.apply_feature_transform的结果
3.在此基础上,我对边界进行处理,将狄利克雷边界条件改为硬边界约束,得到较为相近的图像结果,但是会缺少一条边的结果,在硬边界的基础上我加上原来的狄利克雷边界条件则边界没有问题,请问这个做法可以吗?
使用net.apply_feature_transform对输入进行比例缩放后为什么输出图像的x并没有发生变化,而且产生图像的范围也没有改变?
当把net.apply_feature_transform中的a,b换成小于10的值,误差图像中会有训练损失曲线,但是大于10之后就只有测试损失曲线,这是为什么呢?
使用硬边界去掉狄利克雷边界条件
使用硬边界且加上狄利克雷边界条件
net.apply_feature_transform中当数值大于10时
以下是部分代码,希望能得到您的回复
`def pde(x,y):
def transform(x, y):
res = x[:, 0:1] * (a - x[:, 0:1]) * x[:, 1:2] * (b - x[:, 1:2])
return res * y
def boundary(x, on_boundary):
return on_boundary
def boundary_x(x,on_boundary):
return on_boundary and np.isclose(x[0],0 or a)
def boundary_y(x,on_boundary):
return on_boundary and np.isclose(x[1],0 or b)
geom=dde.geometry.geometry_2d.Rectangle(xmin=[0,0], xmax=[a,b])
bc_1=dde.icbc.DirichletBC(geom,lambda x:0,boundary)
bc_x=dde.icbc.OperatorBC(geom,lambda x,y,:ddw(x,y)[0],boundary_x)
bc_y=dde.icbc.OperatorBC(geom,lambda x,y,:ddw(x,y)[1],boundary_y)
data = dde.data.PDE(geom, pde, [bc_1,bc_x,bc_y], num_domain=1200, num_boundary=240, num_test=1500)
net = dde.nn.FNN([2] + [50] * 4 + [1], "tanh", "Glorot uniform")
net.apply_feature_transform(lambda X: tf.concat([X[:,0:1]/a, X[:,1:2]/b], axis=1))
net.apply_output_transform(transform)
model = dde.Model(data, net)
model.compile("adam", lr=0.001)
model.train(epochs=5000)
model.compile("L-BFGS")
`
Beta Was this translation helpful? Give feedback.
All reactions