遇到错误:无效参数错误:使用Keras和Transformers时图执行错误
我在用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 个回答
暂无回答