首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >403输出的人工神经网络预测CAD网格

403输出的人工神经网络预测CAD网格
EN

Stack Overflow用户
提问于 2020-08-25 15:32:14
回答 1查看 51关注 0票数 1

我试图开发一个神经网络,能够从4个输入参数预测二维CAD的啮合,这些参数是CAD的尺寸。

我将此问题作为回归问题,使用MSE作为损失函数,将adamax作为优化函数,但结果是损失约为350。我尝试过用StandardScalar()和规范化器来拟合数据,但是结果太糟糕了。

我得到了精确的结果= 1,但结果一点也不令人满意。我不知道神经网络是如何测量评估()函数的这种准确性的。我想用欧几里德函数来描述误差,因为我的结果是坐标。如何在神经网络中实现这一功能?

ANN有406个输出,一半用于x坐标,另一半用于Y坐标。是否有可能使一个具有203个输出的神经网络在每个节点(XY)上具有两个值​​?或者您推荐的其他解决方案技术。我附上了我如何开发人工神经网络的结果。

inr形状为:(144,4)。

orf形状为:(144 406)

代码语言:javascript
复制
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)

在这方面我真的需要帮助,非常感谢你的支持。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-25 17:32:49

坏结果-为此,您已经尝试了超参数调优以及特性工程以获得好的结果。同时,尝试不同的模型架构,以尽量减少损失。这部分是关于实验的。没有人能给出正确的答案。

精度--因为您正在使用回归来解决您的问题,所以精度并不是要选择的度量。对于回归问题,可以使用根均方度量。准确性是一种适合于分类任务而不是回归任务的度量。

用两个值构造203个输出-您可以使用tensorflow中的funtional来实现这一点。使用functional,可以有多个输入,也可以有多个输出。在本例中,我将向您展示这两个案例。您可以修改下面的示例来创建模型。代码:

代码语言:javascript
复制
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)

图片:

用于培训:

代码语言:javascript
复制
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)]
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63582294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档