权重是否在所有输入和输出之间共享?
Are weights shared across all inputs and outputs?
我刚刚开始阅读 Deep Learning with JavaScript。
这是预测下载持续时间一章中的代码示例。
const trainData = {
sizeMB: [0.080, 9.000, 0.001, 0.100, 8.000, 5.000, 0.100, 6.000, 0.050, 0.500,
0.002, 2.000, 0.005, 10.00, 0.010, 7.000, 6.000, 5.000, 1.000, 1.000],
timeSec: [0.135, 0.739, 0.067, 0.126, 0.646, 0.435, 0.069, 0.497, 0.068, 0.116,
0.070, 0.289, 0.076, 0.744, 0.083, 0.560, 0.480, 0.399, 0.153, 0.149]
};
const testData = {
sizeMB: [5.000, 0.200, 0.001, 9.000, 0.002, 0.020, 0.008, 4.000, 0.001, 1.000,
0.005, 0.080, 0.800, 0.200, 0.050, 7.000, 0.005, 0.002, 8.000, 0.008],
timeSec: [0.425, 0.098, 0.052, 0.686, 0.066, 0.078, 0.070, 0.375, 0.058, 0.136,
0.052, 0.063, 0.183, 0.087, 0.066, 0.558, 0.066, 0.068, 0.610, 0.057]
};
const trainTensors = {
sizeMB: tf.tensor2d(trainData.sizeMB, [20, 1]),
timeSec: tf.tensor2d(trainData.timeSec, [20, 1])
};
const testTensors = {
sizeMB: tf.tensor2d(testData.sizeMB, [20, 1]),
timeSec: tf.tensor2d(testData.timeSec, [20, 1])
};
const model = tf.sequential([tf.layers.dense({inputShape: [1], units: 1})]);
model.compile({optimizer: 'sgd', loss: 'meanAbsoluteError'});
model.fit(trainTensors.sizeMB, trainTensors.timeSec, { epochs: 10 })
.then(() => {})
在继续本章之前,我想了解一些事情。
- 该层的核心是一个线性函数
y = kernel * x + bias
。此函数映射输入和输出。变量 kernel
和 bias
在训练过程中被调整。 我的问题是:是否每对 (input/output) 都有自己的线性函数实例和自己的状态?也就是说,是只有一对(kernel/bias)还是20对?
只有一对(kernel, bias) by layer使得训练参数在dense layer的情况下。它们也称为层的权重。在训练期间创建和更新模型时会初始化这些权重。
如果每个 input/output 都有一个状态,则该模型不能用于预测它未见过的数据。
model.getWeights()
将 return 模型权重数组。 model.layers[indexOfLayer].getWeights()
将 return 特定层的权重数组
我刚刚开始阅读 Deep Learning with JavaScript。
这是预测下载持续时间一章中的代码示例。
const trainData = {
sizeMB: [0.080, 9.000, 0.001, 0.100, 8.000, 5.000, 0.100, 6.000, 0.050, 0.500,
0.002, 2.000, 0.005, 10.00, 0.010, 7.000, 6.000, 5.000, 1.000, 1.000],
timeSec: [0.135, 0.739, 0.067, 0.126, 0.646, 0.435, 0.069, 0.497, 0.068, 0.116,
0.070, 0.289, 0.076, 0.744, 0.083, 0.560, 0.480, 0.399, 0.153, 0.149]
};
const testData = {
sizeMB: [5.000, 0.200, 0.001, 9.000, 0.002, 0.020, 0.008, 4.000, 0.001, 1.000,
0.005, 0.080, 0.800, 0.200, 0.050, 7.000, 0.005, 0.002, 8.000, 0.008],
timeSec: [0.425, 0.098, 0.052, 0.686, 0.066, 0.078, 0.070, 0.375, 0.058, 0.136,
0.052, 0.063, 0.183, 0.087, 0.066, 0.558, 0.066, 0.068, 0.610, 0.057]
};
const trainTensors = {
sizeMB: tf.tensor2d(trainData.sizeMB, [20, 1]),
timeSec: tf.tensor2d(trainData.timeSec, [20, 1])
};
const testTensors = {
sizeMB: tf.tensor2d(testData.sizeMB, [20, 1]),
timeSec: tf.tensor2d(testData.timeSec, [20, 1])
};
const model = tf.sequential([tf.layers.dense({inputShape: [1], units: 1})]);
model.compile({optimizer: 'sgd', loss: 'meanAbsoluteError'});
model.fit(trainTensors.sizeMB, trainTensors.timeSec, { epochs: 10 })
.then(() => {})
在继续本章之前,我想了解一些事情。
- 该层的核心是一个线性函数
y = kernel * x + bias
。此函数映射输入和输出。变量kernel
和bias
在训练过程中被调整。 我的问题是:是否每对 (input/output) 都有自己的线性函数实例和自己的状态?也就是说,是只有一对(kernel/bias)还是20对?
只有一对(kernel, bias) by layer使得训练参数在dense layer的情况下。它们也称为层的权重。在训练期间创建和更新模型时会初始化这些权重。
如果每个 input/output 都有一个状态,则该模型不能用于预测它未见过的数据。
model.getWeights()
将 return 模型权重数组。 model.layers[indexOfLayer].getWeights()
将 return 特定层的权重数组