اذهب إلى المحتوى
  • 0

ظهور الخطأ ValueError: ('Could not interpret optimizer identifier:', ) أثناء بناء نموذج في Keras و TensorFlow

Meezo ML

السؤال

قمت ببناء نموذج واستخدمت المحسن SGD لكن يظهر لي الخطأ التالي:

from tensorflow.python.keras.layers import Dense,Embedding,LSTM
from tensorflow.python.keras.models import Sequential
from keras.optimizers import SGD
model =Sequential()
model.add(Embedding(max_features, 64))
model.add(LSTM(16))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer=SGD(lr=0.01), loss='binary_crossentropy', metrics=['acc'])
history = model.fit(input_train, y_train,
epochs=2,
batch_size=64,
validation_split=0.2)
---------------------------------------------------------------------------------------------------
ValueError: ('Could not interpret optimizer identifier:', )

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

السبب هو أنك تستخدم  tensorflow.python.keras للنموذج والطبقات و keras.optimizers لـ SGD. وهما نسختان مختلفتان.وبالتالي لم يتمكنوا من العمل معاً. يجب عليك تغيير كل شيء إلى إصدار واحد. ثم ستحل مشكلتك. أي وحد الإصدارات أو قم باستخدام كيراس لكل شيء كالتالي:

from keras.layers import Dense,Embedding,LSTM
from keras.models import Sequential
from keras.optimizers import SGD
model =Sequential()
model.add(Embedding(max_features, 64))
model.add(LSTM(16))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer=SGD(lr=0.01), loss='binary_crossentropy', metrics=['acc'])
history = model.fit(input_train, y_train,
epochs=2,
batch_size=64,
validation_split=0.2)
"""
Loading data...
25000 train sequences
25000 test sequences
Pad sequences (samples x time)
input_train shape: (25000, 20)
input_test shape: (25000, 20)
Epoch 1/2
313/313 [==============================] - 6s 13ms/step - loss: 0.6934 - acc: 0.4900 - val_loss: 0.6934 - val_acc: 0.4964
Epoch 2/2
313/313 [==============================] - 3s 11ms/step - loss: 0.6931 - acc: 0.5031 - val_loss: 0.6931 - val_acc: 0.5036
"""

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

الخطأ كما وضح @Ali Haidar Ahmad ناتج لإختلاف النسخ، بالإضافة للحل المقترح يمكنك تطبيق عمليات preprocessing على البيانات بإستخدام keras.preprocessing وبالتالي يحصل توحيد بين مصادر البيانات المختلفة، لاحظ المثال التالي والذي يقوم بإستخدام sequence من preprocessing والتعامل مع tensorflow.python.keras و keras مباشرة:

from tensorflow.python.keras.layers import Dense,Embedding,LSTM
from tensorflow.python.keras.models import Sequential
from keras.preprocessing import sequence
from keras.datasets import imdb
from keras.optimizers import SGD

max_features = 1000
maxlen = 20
batch_size = 64

(input_train, y_train), (input_test, y_test) = imdb.load_data(num_words=max_features)

input_train = sequence.pad_sequences(input_train, maxlen=maxlen)
input_test = sequence.pad_sequences(input_test, maxlen=maxlen)

model =Sequential()
model.add(Embedding(max_features, 64))
model.add(LSTM(16))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer=SGD(lr=0.01), loss='binary_crossentropy', metrics=['acc'])
history = model.fit(input_train, y_train,
epochs=2,
batch_size=64,
validation_split=0.2)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...