5.归一化3 节

什么是归一化?
  • 把大数量级特征转化为较小的数量级下,通常是[0,1]或[-1,1]
  • 例子:身高体重预测,房价预测
  • 绝大多数,Tensorflow的模型不是给特别大的数设计的
  • 将不同数量级的特征转换到同一数量级,防止某个特征影响过大
操作步骤
  • 准备身高体重训练数据并归一化
  • 训练模型并测试,将结果反归一化为正常数据。
归一化训练数据
  • 准备身高体重训练数据
  • 使用tfvis可视化训练数据
  • 使用tensorflow.js 的api进行归一化
 const heights = [150, 160, 170]
  const weights = [40, 50, 60]
  tfvis.render.scatterplot(
    { name: '身高体重训练集' },
    { values: heights.map((x, i) => ({ x, y: weights[i] })) },
    { xAxisDomain: [140, 180], yAxisDomain: [30, 70] }
  )
  //归一化
  const inputs = tf.tensor(heights).sub(150).div(20)
  const labels = tf.tensor(weights).sub(40).div(20)
  //神经元个数和inputShape
  const model = tf.sequential()
  model.add(tf.layers.dense({ units: 1, inputShape: [1] }))
  // 设置损失函数和优化器
  model.compile({
    loss: tf.losses.meanSquaredError,
    optimizer: tf.train.sgd(0.1)
  })
  // 训练
  await model.fit(inputs, labels, {
    batchSize: 3,
    epochs: 200,
    callbacks: tfvis.show.fitCallbacks({ name: '训练过程' }, ['loss'])
  })
反归一化

预测后,把结果反归一化为正常数据


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容