কেরাস আরএনএন টিউটোরিয়াল থেকে: "আরএনএনগুলি কৌতুকপূর্ণ।
সুতরাং এটি কেরাসে একটি এলএসটিএম-আরএনএন এর হাইপারপ্যারামিটারগুলি সুর করার বিষয়ে আরও সাধারণ প্রশ্ন। আমি আপনার আরএনএন জন্য সেরা পরামিতি সন্ধান করার একটি পদ্ধতির সম্পর্কে জানতে চাই।
আমি কেরাসের গিথুব- এর আইএমডিবি উদাহরণ দিয়ে শুরু করেছি ।
প্রধান মডেলটি দেখতে এমন দেখাচ্ছে:
(X_train, y_train), (X_test, y_test) = imdb.load_data(nb_words=max_features,
test_split=0.2)
max_features = 20000
maxlen = 100 # cut texts after this number of words (among top max_features most common words)
batch_size = 32
model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(LSTM(128))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy',
optimizer='adam',
class_mode="binary")
print("Train...")
model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=3,
validation_data=(X_test, y_test), show_accuracy=True)
score, acc = model.evaluate(X_test, y_test,
batch_size=batch_size,
show_accuracy=True)
print('Test accuracy:', acc)
Test accuracy:81.54321846
৮১.৫ হ'ল একটি ন্যূনতম স্কোর এবং আরও গুরুত্বপূর্ণ এটির অর্থ হল মডেলটি পুরোপুরি অনুকূলিত না হলেও এটি কাজ করে।
আমার ডেটা টাইম সিরিজ এবং টাস্কটি বাইনারি পূর্বাভাস, উদাহরণের মতো। এবং এখন আমার সমস্যাটি এরকম দেখাচ্ছে:
#Training Data
train = genfromtxt(os.getcwd() + "/Data/trainMatrix.csv", delimiter=',', skip_header=1)
validation = genfromtxt(os.getcwd() + "/Data/validationMatrix.csv", delimiter=',', skip_header=1)
#Targets
miniTrainTargets = [int(x) for x in genfromtxt(os.getcwd() + "/Data/trainTarget.csv", delimiter=',', skip_header=1)]
validationTargets = [int(x) for x in genfromtxt(os.getcwd() + "/Data/validationTarget.csv", delimiter=',', skip_header=1)]
#LSTM
model = Sequential()
model.add(Embedding(train.shape[0], 64, input_length=train.shape[1]))
model.add(LSTM(64))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy',
optimizer='adam',
class_mode="binary")
model.fit(train, miniTrainTargets, batch_size=batch_size, nb_epoch=5,
validation_data=(validation, validationTargets), show_accuracy=True)
valid_preds = model.predict_proba(validation, verbose=0)
roc = metrics.roc_auc_score(validationTargets, valid_preds)
print("ROC:", roc)
ROC:0.5006526
মডেলটি মূলত আইএমডিবি একের মতো। যদিও ফলাফলটির অর্থ এটি কিছুই শিখছে না। যাইহোক, আমি যখন ভ্যানিলা এমএলপি-এনএন ব্যবহার করি তখন আমার একই সমস্যা হয় না, মডেলটি শিখে এবং স্কোর বৃদ্ধি পায়। আমি পর্বের সংখ্যা বৃদ্ধি এবং এলটিএসএম ইউনিটের সংখ্যা বৃদ্ধি-হ্রাস করার চেষ্টা করেছি তবে স্কোর বাড়বে না।
সুতরাং আমি নেটওয়ার্ক টিউন করার জন্য একটি স্ট্যান্ডার্ড পদ্ধতির জানতে চাই কারণ তাত্ত্বিকভাবে অ্যালগরিদমের এই সময়ের সিরিজের ডেটাগুলির জন্য বিশেষত একটি মাল্টিলেয়ার পারসেপ্ট্রন নেটওয়ার্কের চেয়ে আরও ভাল সম্পাদন করা উচিত।