遇到错误:无效参数错误:使用Keras和Transformers时图执行错误

0 投票
0 回答
31 浏览
提问于 2025-04-12 05:25

我在用Keras和Transformers训练多个模型时遇到了一些困难。下面是模型的代码片段和在训练过程中遇到的错误:

  • 模型 1:LSTM 模型
(X_train, y_train), (X_test, y_test) = keras.datasets.imdb.load_data()
X_train = X_train[:2500]
y_train = y_train[:2500]
X_test = X_test[:500]
y_test = y_test[:500]

def dekodeeri(tekstijada):
    # Abifunktsioon numbritest tagasi tähtede saamiseks
    word_index = keras.datasets.imdb.get_word_index()
    index_word = {0: "<PAD>", 1: "<START>", 2: "<UNK>", 3: "<UNUSED>"}
    index_word[1] = "[START]"
    index_word[2] = "[OOV]"
    for (word, i) in word_index.items():
        index_word[i + 3] = word
    return " ".join(index_word[i] for i in tekstijada)

print(X_train.shape,y_train.shape)
print(X_test.shape,y_test.shape)
print()
print(X_train[0])
print(dekodeeri(X_train[0]))
print(y_train[0])

max_features = 100000
maxlen = 500

# Padding sequences
print('Pad sequences (samples x time)')
X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
X_test = sequence.pad_sequences(X_test, maxlen=maxlen)
print('X_train shape:', X_train.shape)
print('X_test shape:', X_test.shape)

model = Sequential()
model.add(Embedding(max_features, 256))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Train the model
model.fit(X_train, y_train, batch_size=64, epochs=5, validation_data=(X_test, y_test))
  • 模型 2
import tensorflow as tf
from transformers import TFDistilBertModel, DistilBertConfig
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense, GlobalAveragePooling1D

# Define input shape
input_layer = Input(shape=(maxlen,), dtype=tf.int32)

# Load DistilBERT model
config = DistilBertConfig(dropout=0.2, attention_dropout=0.2)
distil_bert_model = TFDistilBertModel.from_pretrained('distilbert-base-uncased', config=config)

# Freeze DistilBERT layers
for layer in distil_bert_model.layers:
    layer.trainable = False

# Get DistilBERT output
distil_bert_output = distil_bert_model(input_layer)[0]

# Add pooling layer
pooled_output = GlobalAveragePooling1D()(distil_bert_output)

# Add dense layer for classification
output_layer = Dense(1, activation='sigmoid')(pooled_output)

# Create model
model_2_1 = Model(inputs=input_layer, outputs=output_layer)

# Compile the model
model_2_1.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Train the model
model_2_1.fit(X_train_padded, y_train, batch_size=64, epochs=5, validation_data=(X_test_padded, y_test))

遇到的错误:

无效参数错误:图形执行错误。无效参数错误追踪(最近的调用在<cell line: 36>() 34 model_2_1.summary() 35 # 获取结果 ---> 36 model_2_1.fit(X_train_padded, y_train, batch_size=64, epochs=5, validation_data=(X_test_padded, y_test)) 1 frames /usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/execute.py 在 quick_execute(op_name, num_outputs, inputs, attrs, ctx, name) 52 尝试:

模型 3 和模型 4 也遇到了类似的问题。

我已经确保输入数据的形状、数据类型和预处理步骤都是正确的。

0 个回答

暂无回答

撰写回答