- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个物理问题:要构造一个产品,需要根据 10 个输入参数(性能、温度、容量等)确定 10 个输出参数(宽度、长度、 Material 等)。输出参数显然取决于输入参数。但我不知道怎么办。例如,输出参数 O1 可能依赖于输入参数 I1、I2 和 I3。
我已经获得了 30k 个产品的数据及其输入/输出参数。数据库如下所示:
----------------------------------------------
| Product| I1 | I2 | I3 | ... | O1 | O2 | 03 |
----------------------------------------------
| Prod A | 1.2| 2.3| 4.2| ... | 5.3| 6.2| 1.2|
----------------------------------------------
| Prod B | 2.3| 4.1| 1.2| ... | 8.2| 5.2| 5.0|
----------------------------------------------
| Prod C | 6.3| 3.7| 9.1| ... | 3.1| 4.1| 7.7|
----------------------------------------------
| ... | |
----------------------------------------------
所以我需要做的是根据输入参数 I 1 - I 10 找到输出参数 O 1 - O 10 。
第一个问题:如果我答对了,这是一个回归问题,基于一些输入值,我想找到一些输出值(在数据中,有一个函数/公式来确定正确的值)。这是正确的吗?
我的想法是使用/训练神经网络(使用keras和tensorflow作为后端)
这样的神经网络会是什么样子?最佳实践是什么?
这是我到目前为止所拥有的:输入层有 10 个输入,两个全连接深层有 100 个神经元,还有一个层有 10 个输出。在 keras 中,这看起来像这样:
def baseline_model(self, callback):
model = Sequential()
model.add(Dense(100, input_dim=10, activation="relu"))
model.add(Dense(100, activation="relu"))
model.add(Dense(10))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=["accuracy"])
model.fit(input_train, output_train, batch_size=5, epochs=2000, verbose=2, callbacks=[callback], shuffle=True, validation_data=(input_val,output_val))
scores = model.evaluate(input_val, output_val, verbose=1)
print("Scores:",scores)
当然,模型没有按预期工作,这就是我寻求帮助的原因......训练失败:
Epoch 1999/2000
7s - loss: 47634520366153.6016 - acc: 0.0000e+00 - val_loss: 9585392308285.4395 - val_acc: 0.0000e+00
有什么我应该更改的建议吗?我考虑过使用“sigmoid”作为激活并将数据标准化为 [0,1]。
感谢您的建议
最佳答案
If I get it right, this is a regression problem, based on some input values I want to find some output values
是的,我认为你是对的。
How would such a neuronal network look like? What is the best practice?
这是一个非常广泛的问题。我认为你应该将数据分成训练集和验证集,从最简单的网络开始(可能没有隐藏层或只有一个隐藏层),然后使其变得越来越复杂(添加更多层和隐藏单元),同时验证错误减少。当您的网络变得相当深时,最好在密集层之间添加批量归一化层。您还可以查看剩余连接,但不确定您是否真的需要它。
Any suggestions what I should change? I thought about using "sigmoid" as activation and to normalize the Data to [0,1].
loss: 47634520366153.6016
确实很大,但它并没有告诉我们太多关于优化的信息。如果它减少也许你可以提高学习率。如果它增长,请尝试降低学习率或尝试其他优化算法。 严格来说,神经网络调试是一个庞大而复杂的领域,我不确定它是否适合在 stackoverflow 上讨论
PS对不起我的英语
关于machine-learning - 10 个输入和 10 个输出的神经元网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46194327/
我正在实验性地尝试创建一种具有以下标准的新型神经网络: 每个神经元必须是一个单独的对象。 每个神经元都应该有自己的线程。 网络必须部分连接且随机(在启动时)。 神经元必须异步运行以计算其输出、更新其权
如果我想动态地向我的 tensorflow 层中的一个添加新节点,我该怎么做? 例如,如果我想在模型训练一段时间后将隐藏节点的数量从 10 更改为 11。另外,假设我知道我希望进出该节点/神经元的权重
换句话来说,将神经元求和公式中sigmoid之前的偏置切换为b_j或者附加w_ij*x_i的主要原因是什么?表现? 哪种方法最好,为什么? 注意:j是实际层的神经元,i是下层的神经元。 最佳答案 注意
我是一名优秀的程序员,十分优秀!