首页 > 解决方案 > Keras:简单的 1 变量训练以获得平均值

问题描述

我写了一个非常基本的模型来训练单个变量来近似向量的平均值。但由于某种原因,它无法正常工作。我用这个页面描述了一个线性拟合(2个变量): https ://www.tensorflow.org/guide/basic_training_loops

我的代码如下:

import tensorflow as tf
import numpy as np

class MyModel(tf.keras.Model):
  def __init__(self, **kwargs):
    super().__init__()
    self.b = tf.Variable(1.0, trainable=True)

  def call(self, x):
    return x - self.b

model = MyModel()
model.compile(optimizer=tf.optimizers.Adam(learning_rate=1e-3), loss='mae')
X = np.random.random((10000,1))
Y = np.zeros(X.shape)
model.fit(X, Y, batch_size=10, epochs=10)

应该优化 B,使 sum(abs(X - B)) 尽可能接近 0(= 平均值)。但是,当我拟合模型时,它根本没有训练,并且总是达到解决方案 B=0(实际平均值约为 0.5)。

我做错了什么?

标签: tensorflowkeras

解决方案


推荐阅读