টাইমসারি ভেক্টর (থিয়ানো) ভবিষ্যদ্বাণী করার জন্য আরএনএন (এলএসটিএম) ব্যবহার করে


19

আমার খুব সাধারণ সমস্যা আছে তবে আমি এটি সমাধান করার জন্য কোনও সঠিক সরঞ্জাম খুঁজে পাচ্ছি না।

আমার একই দৈর্ঘ্যের ভেক্টরগুলির কিছু ক্রম রয়েছে। এখন আমি এই সিকোয়েন্সগুলির ট্রেনের নমুনায় এলএসটিএম আরএনএনকে প্রশিক্ষণ দিতে চাই এবং তারপরে এটি বেশ কয়েকটি প্রাইমিং ভেক্টরের উপর ভিত্তি করে দৈর্ঘ্যের এর ভেক্টরগুলির নতুন সিক্যুয়েন্সটির পূর্বাভাস দিতে পারি ।এন

এটি কার্যকর করার মতো সহজ বাস্তবায়ন আমি পাই না। আমার বেস ভাষা পাইথন, তবে যেগুলি কিছু দিনের জন্য ইনস্টল করে না তা ধরে রাখবে।

আমি লাসাগন ব্যবহার করার চেষ্টা করেছি , তবে আরএনএন বাস্তবায়ন এখনও প্রস্তুত নয় এবং এটি পৃথক প্যাকেজ এনটুলগুলিতে রয়েছে । যাইহোক, আমি দ্বিতীয়টির চেষ্টা করেছিলাম তবে কীভাবে এটি প্রশিক্ষণ দেওয়া যায় তা আমি বুঝতে পারি না, তারপরে এটি পরীক্ষার কিছু ভেক্টর দ্বারা প্রাইম করে নিন এবং এটি নিউন (গুলি) সম্পর্কে ভবিষ্যদ্বাণী করা যাক। ব্লকগুলি একই সমস্যা - এলএসটিএম আরএনএন-এর জন্য কোনও ডকুমেন্টেশন উপলব্ধ নেই, যদিও মনে হচ্ছে কিছু শ্রেণি এবং ফাংশন রয়েছে যা কাজ করতে পারে (যেমন blocks.bricks.recurrent)।

Theano, মত RNN LSTM বিভিন্ন বাস্তবায়ন আছে GroundHog, theano-rnn, theano_lstmএবং কিছু কাগজপত্র কোড, কিন্তু সেসব থাকে টিউটোরিয়াল অ বা কিভাবে আমি কি চাই না গাইড।

পাইব্রাইন ব্যবহার করা কেবলমাত্র ব্যবহারযোগ্য সমাধান। তবে দুর্ভাগ্যক্রমে এটিতে থিয়ানো (প্রধানত জিপিইউ গণনা) এর বৈশিষ্ট্যগুলির অভাব রয়েছে এবং এতিম হয়েছে (কোনও নতুন বৈশিষ্ট্য এবং সমর্থন নেই)।

কেউ কি জানতে পারে আমি কোথায় যা চাইছিলাম তা কোথায় পেয়েছি? ভেক্টরগুলির অনুক্রমের পূর্বাভাস দেওয়ার জন্য আরএনএন এলএসটিএম এর সাথে কাজ করা সহজ?

সম্পাদনা:

আমি কেরাসকে এভাবে চেষ্টা করেছি:

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTM

model = Sequential()
model.add(Embedding(12, 256))
model.regularizers = []
model(LSTM(256, 128, activation='sigmoid', 
               inner_activation='hard_sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(128, 12))
model.add(Activation('sigmoid'))
model.compile(loss='mean_squared_error', optimizer='rmsprop')

তবে এটি ফিট করার চেষ্টা করার সময় আমি এই ত্রুটিটি পাচ্ছি model.fit(X_train, y_train, batch_size=16, nb_epoch=10)

IndexError: index 800 is out of bounds for axis 1 with size 12

যখন X_trainএবং y_trainঅ্যারে (দৈর্ঘ্যের 12) এর অ্যারে হয়, যেমন[[i for i in range(12)] for j in range(1000)]


1
যদি আপনার সমস্ত ক্রমগুলির দৈর্ঘ্য একই থাকে তবে আপনার আরএনএন দরকার কেন? এএনএন এর মাধ্যমে স্ট্যাটিক ইনপুট ভেক্টরটি সহজ এবং দ্রুততর হবে।
itdxer

ভেক্টরগুলি সময়সীমা থেকে আসে। সুতরাং আরএনএন দরকার কি অনুমান করি?
কোটারফা

1
আরএনএন হ'ল কার্যগুলির জন্য গ্রেট যখন আপনি ইনপুট বা আউটপুট ভেক্টরের আকার জানেন না। উদাহরণস্বরূপ আপনি বিল্ড নেটওয়ার্ক চান যা আপনি ছবিতে যা দেখতে পারেন তা ইংরাজীতে বর্ণনা করবে যাতে আপনার ইনপুট স্থির চিত্র হতে পারে তবে আপনি ছবিতে যা দেখতে পারবেন তার উপর নির্ভর করে আউটপুট পরিবর্তিত হবে। আর একটি উদাহরণ যখন আপনি পাঠ্য অনুবাদ পেতে চান, সেখানে আপনার ইনপুট এবং আউটপুট উভয়ই অজানা।
itdxer

ব্যাখা প্রদানের জন্য ধন্যবাদ. সুতরাং এই কাজে আরএনএন ব্যবহার করার কোনও কারণ নেই। ঠিক আছে.
কোটারফা

2
@ itdxer এর মন্তব্য বিভ্রান্তিকর। আপনার ডেটা সর্বত্র একই দৈর্ঘ্য থাকলেও, আরএনএন ব্যবহার করা উপকারী হতে পারে। একটি আরএনএন তথ্য অনুমানের সাথে পরিচয় করিয়ে দেয়, মূলত এটি অনুক্রমিক প্রকৃতির। উদাহরণস্বরূপ সময় অক্ষের সাথে অনুবাদটি আরএনএন দ্বারা কৌতূহলীভাবে পরিচালনা করা হয়, তবে ফিড ফরোয়ার্ড পদ্ধতিগুলির দ্বারা নয় - এটি উপলব্ধি করার জন্য তাদের আরও অনেক প্রশিক্ষণের ডেটা প্রয়োজন এবং অনুমান করার জন্য আরও অনেকগুলি পরামিতি থাকতে হবে। আরও অনেকগুলি মামলা রয়েছে যেখানে কোনও এএনএন কেবল আরএনএন-এর পরিবর্তে ব্যবহৃত হলে ক্র্যাশ হয়ে জ্বলে উঠবে।
বায়ারজ

উত্তর:


10

আমি অবশেষে একটি উপায় খুঁজে পেয়েছি এবং এটি এখানে আমার ব্লগে নথিভুক্ত করেছি ।

বেশ কয়েকটি ফ্রেমওয়ার্কের তুলনা এবং তারপরে কেরাসে একটির বাস্তবায়নও রয়েছে।


5

আমি নিম্নলিখিতটি সুপারিশ করব:

0) থিওনো সত্যই শক্তিশালী তবে হ্যাঁ কখনও কখনও শুরু করার সাথে সাথে কডটি বিচ্ছিন্ন হতে পারে

1) আমি আপনাকে ব্রিজটি পরীক্ষা করার পরামর্শ দিচ্ছি: https://github.com/breze-no-salt/breze/blob/master/notebooks/recurrent-networks/RNNs%2020%%PPIN%20music.ipynb যা কিছুটা সহজ বোঝার জন্য এবং একটি LSTM মডিউলও রয়েছে। তদ্ব্যতীত, হার্ভার্ডস দ্বারা একটি ইন্টারেস্টিং পছন্দ হ'ল অটোগ্রেড, যা নম্পূর্ণ ফাংশনগুলির স্বয়ংক্রিয় প্রতীকী পার্থক্য https://github.com/HIP/autograd/blob/master/example/lstm.py করে এবং তাই আপনি সহজেই বুঝতে পারেন যে কী চলছে।

2) আমি পাইথন ফ্যান তবে এটি আমার ব্যক্তিগত পছন্দ। আপনি কি টর্চ 7 ব্যবহার করা স্নায়বিক নেটওয়ার্কগুলির জন্য সবচেয়ে ব্যবহারকারী-বান্ধব কাঠামো হিসাবে বিবেচনা করেছেন এবং এটি গুগল ডিপমাইন্ড এবং ফেসবুক এআই দ্বারাও ব্যবহৃত হয়? আপনি আরএনএন সম্পর্কে এই খুব আকর্ষণীয় ব্লগ পোস্টটি চেক করতে পারেন http://karpathy.github.io/2015/05/21/rnn-efftivity/ । অতিরিক্ত হিসাবে, একটি এলএসটিএম বাস্তবায়ন পোস্টের গিথুব রেপোতে উপলব্ধ, অন্যদিকে বিকল্পটি হল rnn প্যাকেজ https://github.com/Element-Research/rnn


1
আমি কয়েক সপ্তাহ ধরে কার্পতির কাজ সফলভাবে ব্যবহার করেছি। দুর্ভাগ্যক্রমে, আমি ভেক্টরগুলির পূর্বাভাস দেওয়ার জন্য তার অ্যালগরিদমটি মুছে ফেলতে পারছি না এবং চরিত্রগুলির ক্রম নয়। এটি লুয়ার সাথে খুব বেশি পরিচিত না হওয়ার কারণও। অত: পর, আমি করেছি নিস্ক্রিয়ভাবে Torch7 এছাড়াও ব্যবহৃত হয়েছে, কিন্তু আমি সত্যিই এটা খুব বন্ধুত্বপূর্ণ খুঁজে না। আপনাকে ধন্যবাদ
কোটারফা

এসএনএন

আমার কাছে প্রতি সেকেন্ডের জন্য পরিমাপ থেকে 12 টি উপাদান রয়েছে। আমি নেটটি প্রশিক্ষণ দিতে চাই, তারপরে এটি প্রাইম করুন যেমন 5 ভেক্টর দ্বারা (12 দৈর্ঘ্যের) এবং এটি নিম্নলিখিত ভেক্টরটির পূর্বাভাস দেওয়া যাক। বেশি না. আমি কেরাস ব্যবহার করে আমার প্রশ্নটি আপডেট করেছি।
কোটারফা

এমনকি যদি আপনার ভেক্টর সময়-সিরিজ থেকে আসে তবে আপনি তার জন্য একটি সাধারণ ফিড ফরোয়ার্ডও ব্যবহার করতে পারেন। কেবল সুনির্দিষ্ট সংখ্যা স্থির কিনা তা নিশ্চিত করুন।
ইয়ান্নিস Assael

কার্প্যাথির মতো আমি যে কয়েকটি নিবন্ধ পড়েছি তা থেকে, আমি বুঝতে পেরেছি যে সিকোয়েন্সগুলির জন্য এলএসটিএমই সেরা পছন্দ, না? সরল ফিড ফরোয়ার্ড এনএন-এর কি "স্মৃতি বৈশিষ্ট্য" রয়েছে?
কোটারফা

0

থিয়েনের সাথে কিছু সময়ের সিক্যুয়েন্সের পূর্বাভাস দিয়ে আমি এলএসটিএম পরীক্ষা করেছি। আমি দেখেছি যে কিছু মসৃণ বক্ররেখার জন্য, এটি সঠিকভাবে পূর্বাভাস দেওয়া যেতে পারে। তবে কিছু জিগজ্যাগ বক্ররেখার জন্য। এটি ভবিষ্যদ্বাণী করা কঠিন। বিস্তারিত নিবন্ধটি নীচে রয়েছে: এলএসটিএম এর সাথে সময়ক্রমের পূর্বাভাস

পূর্বাভাসের ফলাফলটি নিম্নলিখিত হিসাবে প্রদর্শিত হতে পারে:

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.