【问题标题】:TensorflowJS: different shape for outputTensorflowJS:输出的不同形状
【发布时间】:2020-04-29 15:53:10
【问题描述】:

我是 Tensorflow 的新手。

我的目标很简单:我有一个 3d 张量作为输入/训练值,我想将它“映射”到一个 1d 输出张量。

运行我的模型时,我收到一个错误,即无法将一维输出张量分配给定义的 [5, 5] 形状:

const model = tf.sequential({
  layers: [
    tf.layers.dense({
      inputShape: [5, 5],
      units: 32,
      activation: "relu"
    }),
    tf.layers.dense({ units: 1, activation: "softmax" }),
  ]
});

输出/输入可以有不同的形状吗?我希望 3d 张量像“数字组”一样解析为单个(1d 张量)数字。

【问题讨论】:

    标签: tensorflow neural-network artificial-intelligence tensorflow.js


    【解决方案1】:

    要将高维张量(优于 1)映射到一维张量,需要在其间使用 flatten 层

    const model = tf.sequential({
      layers: [
        tf.layers.dense({
          inputShape: [5, 5],
          units: 32,
          activation: "relu"
        }),
        tf.layers.flatten(),
        tf.layers.dense({ units: 1, activation: "softmax" }),
      ]
    });
    

    【讨论】:

    • 谢谢,成功了!在给出这个答案之前,我已经想出了使用默认的Array.flat() 方法将我的数组展平给tf.tensor 的想法。手动展平阵列或使用展平层有什么区别?
    • Array.flat 将展平普通的 js 数组,而模型期望展平张量
    • 是的,但是在创建该张量时,我在将数组提供给张量之前运行了 array.flat()。这会导致与使用 flatten 层不同的行为吗? (两者似乎都有效)
    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 2021-03-30
    • 1970-01-01
    • 2017-07-15
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多