【问题标题】:tensorflow.js getting Error when checking input: expected dense_Dense1_input to have 3 dimension(s). but got array with shapetensorflow.js 在检查输入时出错:预期的 dense_Dense1_input 具有 3 个维度。但是有形状的数组
【发布时间】:2020-06-18 09:45:13
【问题描述】:

简单的问题,我肯定答案很简单,但我真的很难将模型形状与张量拟合到模型中。

这个简单的代码

    let tf = require('@tensorflow/tfjs-node');

    let features = {
        x: [1,2,3,4,5,6,7,8,9],
        y: [1,2,3,4,5,6,7,8,9]
      }

    let tensorfeature  = tf.tensor2d(Object.values(features))

    console.log(tensorfeature.shape)

    const model = tf.sequential();
        model.add(tf.layers.dense(
            {
            inputShape: tensorfeature.shape,
            units: 1
        }
            ))
            const optimizer = tf.train.sgd(0.005);
            model.compile({optimizer: optimizer, loss: 'meanAbsoluteError'}); 
            model.fit(tensorfeature,
                {epochs: 5}
                )

导致错误:检查输入时出错:预期 dense_Dense1_input 具有 3 个维度。但得到了形状为 2,9 的数组

用 reshape、slice 等尝试了多种方法,但都没有成功。有人能指出我到底出了什么问题吗?

【问题讨论】:

    标签: tensorflow tensorflow.js


    【解决方案1】:

    model.fit 至少有两个参数 x,y,它们是张量或张量数组。 config对象是第三个参数。

    此外,作为参数传递给 model.fit 的特征 (tensorfeature) 张量应该比模型的 inputShape 高一维。由于tensorfeature.shape被用作inputShape,如果我们想用tensorfeature训练模型,它的维度应该被扩展。可以使用reshapeexpandDims 来完成。

    model.fit(tensorfeature.expandDims(0))
    // or possibly
    model.fit(tensorfeature.reshape([1, ...tensorfeature.shape])
    

    herethere 讨论了模型和训练数据之间的这种形状不匹配

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 2017-11-26
      • 2020-06-09
      • 2019-12-22
      • 2019-04-07
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多