TensorFlow.js:那两个张量相等吗?

时间:2019-04-20 10:20:13

标签: javascript tensorflow tensor

我正在阅读TensorflowJS文档。他们在示例代码中声明

  const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);

See here

我很困惑,因为他们在这里使用了二维数组。有人知道为什么吗?

为完整起见,这是完整的代码段。

 // Define a model for linear regression.
  const model = tf.sequential();
  model.add(tf.layers.dense({units: 1, inputShape: [1]}));

  // Prepare the model for training: Specify the loss and the optimizer.
  model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

  // Generate some synthetic data for training.
  const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
  const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

  // Train the model using the data.
  model.fit(xs, ys).then(() => {
    // Use the model to do inference on a data point the model hasn't seen before:
    // Open the browser devtools to see the output
    model.predict(tf.tensor2d([5], [1, 1])).print();
  });

在这里使用一维数组会不会更简单,因为数组始终不会使用第二维?

const xs = tf.tensor1d([1, 2, 3, 4]);

1 个答案:

答案 0 :(得分:0)

特征xs张量是一个二维张量。更一般而言,特征张量比第一层的inputShape大一维。添加的维是批处理维,它指示输入形状,模型受过训练或预测的输入形状的多少个元素。

在该示例中,inputShape的大小为[1],要素形状必须为形状[b,1],因此是二维张量