tensorflow - 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)。
我做错了什么?
解决方案
推荐阅读
- ios - 如果我在新证书上更新我的配置文件(企业分发方法),我的应用程序会停止吗?
- jquery - 每 2 秒滑动一个 div
- jakarta-ee - 如何避免wildfly为JNDI创建依赖项
- javascript - 在堆栈导航器中保存 Switch 组件的状态
- python - 搜索 JSON 文件以获取记录并附加到数据框
- angular - Angular 7 中的单例服务
- regex - 以空格分隔的多个匹配项
- javascript - 如何调用和打印 nodeType 名称而不仅仅是数字(例如:“ELEMENT_NODE”)?
- java - 将 N 表示为 1、3 之和的不同方式的计数
- coffeescript - 如何清理文件名中的 HTML - Javascript Coffeescript