为了账号安全,请及时绑定邮箱和手机立即绑定

具有 403 个输出的 ANN 来预测 CAD 网格

具有 403 个输出的 ANN 来预测 CAD 网格

慕少森 2023-06-20 13:44:09
我正在尝试开发一个能够根据 4 个输入参数预测 2D CAD 网格划分的神经网络,这些参数是 CAD 尺寸。我将此问题视为回归问题,使用 MSE 作为损失函数,使用 adamax 作为优化器,但结果损失约为 350。我尝试用 StandardScalar() 和规范化器拟合我的数据,但结果太糟糕了。我得到了准确度 = 1 的结果,但结果一点也不令人满意。我不知道神经网络如何在 evaluate() 函数中测量这种准确性。我想用欧氏函数来测量误差,因为我的结果是坐标。我怎样才能在我的神经网络中实现这个功能?ANN 有 406 个输出,一半用于 x 坐标,另一半用于 Y 坐标。是否可以制作一个在每个节点(XY)有两个值的 203 个输出的神经网络?或者您推荐什么其他解决方案技术。我附上了我如何开发 ANN 的结果。inr 形状是:(144,4)。orf 形状是:(144,406)inr=inRef.to_numpy()orf=outref.to_numpy()print(inr.shape,orf.shape)red1= Sequential()red1.add(Dense(500,activation='linear',input_shape=(4,),kernel_initializer='normal'))red1.add(Dense(500,activation='linear',kernel_initializer='normal'))red1.add(Dense(406,activation='linear',kernel_initializer='normal'))kera.utils.plot_model(red1, 'pcel.png', show_shapes=True)red1.compile(loss='mean_squared_error',optimizer='Adamax')     rp1,rp2,rx1,rx2= train_test_split(inr,orf, test_size = 0.1, random_state = 0)red1.fit(rp1,rx1,validation_split=0.45, validation_freq=2,epochs =100,verbose=0) prt,acu=red1x.evaluate(rp2,rx2)我真的需要帮助,非常感谢您的支持。
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

糟糕的结果- 为此,您尝试了超参数调整和特征工程以获得良好的结果。与此同时,尝试不同的模型架构以尽量减少您的损失。这部分是关于实验的。没有人可以为此给出正确的答案。


准确性- 由于您正在使用回归来解决您的问题,因此准确性不是要选择的指标。您可以使用均方根度量来解决回归问题。准确性是适用于分类任务而非回归任务的指标。


使用两个值构造 203 个输出- 您可以通过使用 tensorflow 中的函数式 API 来完成此操作。使用功能性 api,您可以进行多个输入和多个输出。在这个例子中,我将向您展示这两种情况。您可以调整以下示例来创建您的模型。代码:


def create_model():

    input1 = tf.keras.Input(shape=(13,), name = 'I1')

    input2 = tf.keras.Input(shape=(6,), name = 'I2')

    

    hidden1 = tf.keras.layers.Dense(units = 4, activation='relu')(input1)

    hidden2 = tf.keras.layers.Dense(units = 4, activation='relu')(input2)

    merge = tf.keras.layers.concatenate([hidden1, hidden2])

    hidden3 = tf.keras.layers.Dense(units = 3, activation='relu')(merge)

    output1 = tf.keras.layers.Dense(units = 2, activation='linear', name ='O1')(hidden3)

    output2 = tf.keras.layers.Dense(units = 2, activation='linear', name = 'O2')(hidden3)

    model = tf.keras.models.Model(inputs = [input1,input2], outputs = [output1,output2])

    

    model.compile(optimizer='Adamax',

                  loss='mean_squared_error',

                  metrics=[tf.keras.metrics.RootMeanSquaredError()])

    return model



model = create_model3()

tf.keras.utils.plot_model(model, 'my_first_model.png', show_shapes=True)

图像:

//img1.sycdn.imooc.com//64913ce30001b19e06010514.jpg

为了训练:


history = model.fit(

    x = {'I1':x1, 'I2':x2}, 

    y = {'O1':y1, 'O2': y2},

    batch_size = 32,

    epochs = 10,

    verbose = 1,

    callbacks = None

#     validation_data = [(val_data,new_val_data),(val_labels, new_val_labels)]

)


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信