Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keras/TF不兼容形状中的未知值错误_Keras - Fatal编程技术网

Keras/TF不兼容形状中的未知值错误

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.

我刚开始学习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.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
    传递到第一个
    densite
    层时,模型期望所有输入都具有batch size
    batchSize
  • 但是,当您通过以下方式安装模型时:

    model.fit(xtrain, ytrain)
    
    由于参数
    batch\u size
    的默认值为32,这是
    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:)不,它很可能与原始问题无关。事实上,我从未发现这个错误。我很高兴在一个新的问题中研究它,前提是您提供了复制它所需的所有代码。