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

我正在尝试开发一个能够根据 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)

我真的需要帮助,非常感谢您的支持。


慕少森
浏览 107回答 1
1回答

白衣染霜花

糟糕的结果- 为此,您尝试了超参数调整和特征工程以获得良好的结果。与此同时,尝试不同的模型架构以尽量减少您的损失。这部分是关于实验的。没有人可以为此给出正确的答案。准确性- 由于您正在使用回归来解决您的问题,因此准确性不是要选择的指标。您可以使用均方根度量来解决回归问题。准确性是适用于分类任务而非回归任务的指标。使用两个值构造 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 modelmodel = create_model3()tf.keras.utils.plot_model(model, 'my_first_model.png', show_shapes=True)图像:为了训练: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)])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python