【问题标题】:keras raise No gradients provided for any variable for a simple modelkeras raise 没有为简单模型的任何变量提供梯度
【发布时间】:2021-09-11 07:45:10
【问题描述】:

我是 keras 的新手,我只是创建一个模型来近似从 45 维向量到 20 维向量的映射。

我的代码是

x = Input(shape=(45))
y = Dense(90)(x)
y = Dense(40)(y)
z = Dense(20)(y)

predictor = Model(x,z)
predictor.compile(optimizer='adam')
predictor.summary()

def train():
    X = []
    Y = []

    f = open('./x.txt', 'r')
    line = f.readline()
    while line:
        X.append(eval(line))
        line = f.readline()
    f.close()
    f = open('./y.txt', 'r')
    line = f.readline()
    while line:
        Y.append(eval(line))
        line = f.readline()
    f.close()
    X=np.array(X).reshape(-1,45)
    Y=np.array(Y).reshape(-1,20)
    predictor.fit(X, Y, batch_size=32, epochs=5)

我得到“ValueError:没有为任何变量提供渐变:['dense/kernel:0', 'dense/bias:0', 'dense_1/kernel:0', 'dense_1/bias:0', ' dense_2/kernel:0', 'dense_2/bias:0']。"

summary() 的结果是

Model: "functional_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 45)]              0         
_________________________________________________________________
dense (Dense)                (None, 90)                4140      
_________________________________________________________________
dense_1 (Dense)              (None, 40)                3640      
_________________________________________________________________
dense_2 (Dense)              (None, 20)                820       
=================================================================
Total params: 8,600
Trainable params: 8,600

我不确定我的错误在哪里

【问题讨论】:

  • 在此处添加损失函数:predictor.compile(optimizer='adam') => predictor.compile(optimizer='adam', loss='some_loss_function')

标签: python keras


【解决方案1】:

这是因为你没有在编译器方法中提供损失函数。

所以,改成这样:

#predictor.compile(optimizer='adam')
predictor.compile(optimizer='adam', loss='some_loss_function')`

您选择的损失函数取决于您的问题类型。如果是回归,可以使用mse,或者是分类,可以使用categorical_crossentropy

【讨论】:

    猜你喜欢
    • 2020-07-29
    • 1970-01-01
    • 2017-06-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多