machine-learning - 使用 Keras 进行层级联
问题描述
我打算有以下设计:
但是我的代码似乎不起作用:
import numpy as np
from keras.models import Model
from keras.layers import Dense, Input, Concatenate
from keras import optimizers
trainX1 = np.array([[1,2],[3,4],[5,6],[7,8]]) # fake training data
trainY1 = np.array([[1],[2],[3],[4]]) # fake label
trainX2 = np.array([[2,3],[4,5],[6,7]])
trainY2 = np.array([[1],[2],[3]])
trainX3 = np.array([[0,1],[2,3]])
trainY3 = np.array([[1],[2]])
numFeatures = 2
trainXList = [trainX1, trainX2, trainX3]
trainYStack = np.vstack((trainY1,trainY2,trainY3))
inputList = []
modelList = []
for i,_ in enumerate(trainXList):
tempInput= Input(shape = (numFeatures,))
m = Dense(10, activation='tanh')(tempInput)
inputList.append(tempInput)
modelList.append(m)
mAll = Concatenate()(modelList)
out = Dense(1, activation='tanh')(mAll)
model = Model(inputs=inputList, outputs=out)
rmsp = optimizers.rmsprop(lr=0.00001)
model.compile(optimizer=rmsp,loss='mse', dropout = 0.1)
model.fit(trainXList, trainYStack, epochs = 1, verbose=0)
错误消息说我的输入数据集的形状不同,但是在我填充训练集以使所有 3 个集的样本数 = 4 之后,我仍然收到错误说尺寸不正确。我可以知道如何正确设计这个网络吗?谢谢!
ps 以下是填充前的错误信息:
ValueError: All input arrays (x) should have the same number of samples. Got array shapes: [(4, 2), (3, 2), (2, 2)]
这是填充后的错误消息(发生在代码的最后一行):
ValueError: Input arrays should have the same number of samples as target arrays. Found 4 input samples and 12 target samples.
解决方案
您的输入形状对于给定的输入是错误的。您为输入分配了 numFeatures 的大小,但实际上您有二维数组,它们是不同的 (4,2)(3,2)(2,2)。我不确定你的问题,但样本数量和特征数量似乎是相反的。
tempInput= Input(shape = (numFeatures,))
此外,您的 y 也很奇怪。通常你有 X (number_of samples, num_features) 和 y with (number of samples, labels)。
用于model.summary()
查看您的网络的外观。
推荐阅读
- nginx - 如何在 Kubernetes Nginx Ingress Controller 中将 Nginx IP 附加到 X-Forwarded-For
- javascript - 在 React-Native Typescript 项目中包含 JS 文件
- terraform - 在重构 terraform 代码时,是否有一种健全的方法来更新相应的 terraform 状态?
- java - io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0
- python - Telethon 问题:NameError:未定义名称“事件”
- python - 使用双进度条时 tqdm 打印新行
- flutter - 如何在flutter中导入和使用包?
- reactjs - React hooks-如何使用变量在下拉列表中设置选项
- tensorflow - max_pool2d的参数是什么意思?
- c# - 有没有办法在文本块/文本框对象中选择多行字符串的单行/单词?