我正在阅读TensorflowJS文档。他们在示例代码中声明
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
我很困惑,因为他们在这里使用了二维数组。有人知道为什么吗?
为完整起见,这是完整的代码段。
// 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]);
答案 0 :(得分:0)
特征xs
张量是一个二维张量。更一般而言,特征张量比第一层的inputShape大一维。添加的维是批处理维,它指示输入形状,模型受过训练或预测的输入形状的多少个元素。
在该示例中,inputShape的大小为[1]
,要素形状必须为形状[b,1]
,因此是二维张量