在我的模型上运行训练时出现此错误。我在不同的网站上发现了这个问题,但找不到我的问题的解决方案。
这是我的模型:
import keras
import tensorflow as tf
import tensorflow.keras.layers as L
import tensorflow.keras.models as M
import tensorflow.keras.callbacks as C
import tensorflow.keras.utils as U
def make_model_lstm_pooling(inshape=50000):
z = L.Input(shape=(inshape, 10))
x = L.AveragePooling1D(pool_size=1, strides=100)(z)
x = L.Bidirectional(
L.LSTM(10,
dropout=0.1,
return_sequences=False,
kernel_initializer='ones',
bias_initializer='zeros')
)(x)
x = L.Dense(10, activation='linear')(x)
x = L.Dense(1, activation='linear')(x)
model = tf.keras.Model(z, x)
model.compile(optimizer='adam')
return model
然后我进行培训:
callback_lr = C.ReduceLROnPlateau(
monitor='val_loss',
patience=3,
verbose=0,
mode='min')
checkpoint = C.ModelCheckpoint(
filepath='best_pool.h5',
save_best_only=True,
monitor='val_loss',
mode='min')
model = make_model_lstm_pooling()
model.summary()
history = model.fit(
X_train, Y_train,
validation_data=(X_dev, Y_dev),
epochs=100,
callbacks=[checkpoint, callback_lr]
)
整个错误是这个:
ValueError:没有为任何变量提供梯度:['bidirectional_16/forward_lstm_50/lstm_cell_83/kernel:0'、'bidirectional_16/forward_lstm_50/lstm_cell_83/recurrent_kernel:0'、'bidirectional_16/forward_lstm_50/lstm_cell_83/bias:0'、'bidirectional_16/backward_lstm_50 /lstm_cell_84/kernel:0'、'bidirectional_16/backward_lstm_50/lstm_cell_84/recurrent_kernel:0'、'bidirectional_16/backward_lstm_50/lstm_cell_84/bias:0'、'dense_90/kernel:0'、'dense_90/bias:0'、'dense_91 /内核:0','dense_91/bias:0']。
我在运行时遇到问题fit
。
我看到使用错误类型时会出现问题:我float
在输入和int
标签中有类型。我在输入中没有 nan。
我在错误中看到与内核初始化程序有关的问题,默认为glorot_uniform
,如果我没记错的话,在我看来它不是零。
我试图改变kernel_initializer
但没有改善。
别的东西:我对几个样本进行了测试,在我的测试中,我的样本比特征少。有谁知道问题是否与此有关?
任何帮助将不胜感激。