python - 多(单输出)神经网络与单(多目标)神经网络有什么区别?
问题描述
我正在使用 Keras/TF 解决以下自回归问题:
输入:
m个示例 x 10 个时间步(序列长度)x 7 个特征
(每个值都是真实值)
输出:
m个示例 x 4 个目标/“标签”(我想预测的真实值)
到目前为止,在最后使用具有密集层的 LSTM(已编辑)。因此,举个例子,我在大小为 10 的序列中给出了 7 个特征,我只想要其中的 4 个真实值(我根据以前的值预测当前值)。
我的问题如下 :
预测 和有什么区别:
一个。1 个输出,尺寸为m x 4
湾。4 个输出,每个尺寸为m x 1
我已经尝试了这两种方法,但我没有看到任何特别的区别,但我想了解它们都做了什么。在第二种情况下,我知道我可以为要预测的每个变量的损失指定不同的损失和不同的权重,但这似乎不如第一种方法正确。
#python / Keras-TF
#a. multi output
model = Model(inputs = X_input, outputs = [Output1,Output2,Output3,Output4])
prediction = model.predict(X_test_normalized) #returns an inconvenient list of 4 [2 by 1 vectors] which in the end gives me m*4 real values as wanted
###### vs ######
#b. single output
model = Model(inputs = X_input, outputs = [Output1]) #vector of dimension 4
prediction = model.predict(X_test_normalized) #returns a m*4 matrix
解决方案
大多数时候它并没有什么不同。如果您的输出层是密集的,则它们中的每一个都将有一个 *1 权重矩阵。如果您有单个输出层,则权重的形状为 n*4。通常一个大的输出层更快,因为一个大的矩阵乘法通常比多个小的矩阵乘法快。
您也可以对单个输出层的输出进行加权。只需将其与输出大小的权重向量相乘,然后再将其赋予损失。
推荐阅读
- java - 这个java代码中的这个指定代码有什么问题?
- html - 小屏幕上最小高度的引导轮播最小值
- react-native-android - 我可以自定义反应原生 joi 以返回对象错误吗
- c# - async-await 方法(等待响应)
- node.js - HTTP 错误 500.1013 Azure 应用服务节点 8.9.4
- puppeteer - Puppeteer:如何导航到从 $$ 获得的元素?
- sql - 阿拉伯字符串Oracle数据库上的WHERE子句匹配问题
- javascript - 根据元素的频率对数组进行排序
- html - CSS - 粘性网格标题
- regex - 查找具有 2 个或更多 * 的字符