Keras/TF不兼容形状中的未知值错误
我刚开始学习Keras,我想我遗漏了一些关于层如何相互作用的东西 我有这种形状的数据:Keras/TF不兼容形状中的未知值错误,keras,Keras,我刚开始学习Keras,我想我遗漏了一些关于层如何相互作用的东西 我有这种形状的数据: x shape : (696, 5, 6) y shape : (696, 5, 2) 这是一个非常简单的模型,我只是想继续探索 inputShape = (xtrain.shape[1], xtrain.shape[2]) batchSize = xtrain.shape[0] / 6 outputDim = ytrain.shape[2] model = Sequential() model.
x shape : (696, 5, 6)
y shape : (696, 5, 2)
这是一个非常简单的模型,我只是想继续探索
inputShape = (xtrain.shape[1], xtrain.shape[2])
batchSize = xtrain.shape[0] / 6
outputDim = ytrain.shape[2]
model = Sequential()
model.add(Dense(500, activation='relu', input_shape=inputShape, batch_size=batchSize))
model.add(Dense(500, activation='relu'))
model.add(Dense(outputDim, activation='softmax'))
model.compile(optimizer='rmsprop', loss='mse')
我不知道这个错误中的32
是从哪里来的
tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [116,5] vs. [32,5]
文森特,你几乎成功了。让我解释一下发生了什么:
- 当将
传递到第一个batch\u size=batchSize
层时,模型期望所有输入都具有batch sizedensite
batchSize
- 但是,当您通过以下方式安装模型时:
由于参数model.fit(xtrain, ytrain)
的默认值为32,这是batch\u size
用于从model.fit
和xtrain
创建批处理的默认值,因此引发了错误ytrain
model.fit的参数batch\u size
设置为batchSize
密集层的batch\u size
(或设置batch\u size=None
)。这允许具有动态批量大小-网络适用于所有批量大小(例如,您可以将model.fit
或model.predict
的batch\u size
设置为任意值)
Dense
层不接受batch\u size
参数。您的代码对我来说运行良好(在batch\u size
分区上放置了int()
包装器之后)。让我怀疑这是否是版本问题。您使用的是什么TF版本?你们是否在交叉进口TF干酪和香草干酪?(例如,将keras.backend作为K导入,从tensorflow.keras.models按顺序导入
)@TheLoneDeranger您的意思是我应该通过TF导入keras?不,您可以通过tensorflow使用香草keras或keras,以您喜欢的为准,但跨越它们——从vanilla导入一些函数,从tensorflow导入其他函数——通常会产生错误,尤其是奇怪和意外的回溯。我只是想排除可能的原因。听起来这段代码对我来说很有用,只是因为我从来没有尝试过去适应它(只是在编译时才这么做,如上所述)。这完全把我带到了下一步!这就是这个问题的答案:)这让我想到了另一个问题,我将对此进行调查,但以防万一,你认为下一个问题是否与原始问题有关tensorflow.python.framework.errors\u impl.InternalError:Blas-GEMM启动失败:a.shape=(160,6),b.shape=(6500),m=160,n=500,k=6
Great:)不,它很可能与原始问题无关。事实上,我从未发现这个错误。我很高兴在一个新的问题中研究它,前提是您提供了复制它所需的所有代码。