আমি কীভাবে আমার নেটওয়ার্কটিকে ইনপুটটির ঘূর্ণন সমানভাবে করতে পারি?


11

আমি নিউরাল নেটওয়ার্ক চালানোর জন্য নিজের সিস্টেমটি প্রোগ্রাম করার চেষ্টা করছি। প্রয়োজনীয় নোডের সংখ্যা হ্রাস করার জন্য, এটি এটিকে ইনপুটগুলির আবর্তনের সমানভাবে আচরণ করার পরামর্শ দেওয়া হয়েছিল।

আমার নেটওয়ার্কটির লক্ষ্য গ্রিডে প্রতিটি স্কোয়ার এবং তার আশেপাশের স্কোয়ারগুলি দেখে এবং সেই স্কোয়ারের জন্য আউটপুট প্রদান করে কনওয়ের গেম অফ লাইফ শিখতে এবং ভবিষ্যদ্বাণী করা to এর ইনপুটটি 9 বিটের একটি স্ট্রিং:

এনজির্নহীন বিমান

উপরেরটি 010 001 111 হিসাবে উপস্থাপিত হয়।

এই আকারের অন্য তিনটি আবর্তন রয়েছে তবে এগুলির সমস্তই একই আউটপুট উত্পাদন করে:

গ্লাইডার আবর্তন

আমার নেটওয়ার্ক টপোলজিটি ইনপুটটিতে কেন্দ্র বর্গক্ষেত্রের পরবর্তী অবস্থার জন্য 9 ইনপুট নোড এবং 1 আউটপুট নোড। আমি কীভাবে লুকানো স্তর (গুলি) তৈরি করতে পারি যাতে তারা এই প্রতিটি ঘূর্ণনকে একই হিসাবে গ্রহণ করে, সম্ভাব্য ইনপুটগুলির সংখ্যাকে মূলের এক চতুর্থাংশে কেটে দেয়?

সম্পাদনা:

প্রতিটি ঘূর্ণনের একটি ফ্লিপও রয়েছে যা অভিন্ন ফলাফল তৈরি করে। এগুলি অন্তর্ভুক্ত করে আমার ইনপুটগুলি 1/8 তম করে কেটে দেবে। গ্লাইডার সহ, আমার লক্ষ্য হ'ল এই সমস্ত ইনপুটগুলির সাথে ঠিক একইরকম আচরণ করা। এটি কি প্রি-প্রসেসিংয়ের মাধ্যমে করাতে হবে, বা আমি এটি নেটওয়ার্কে অন্তর্ভুক্ত করতে পারি?


বকেয়া প্রশ্ন! আমার নিজস্ব প্রকল্পের সাথে আমার অনুরূপ সমস্যা রয়েছে এবং প্রতিসাম্য হ্রাস করার সবচেয়ে দক্ষ কৌশলগুলি সম্পর্কে জানতে আগ্রহী হবেন।
DukeZhou

@ ডুকঝোউ আমি এই ধারণাটি পেয়েছি যে তবে উত্তর পেতে কিছুটা সময় লাগবে। আমি প্রয়োজনে একটি অনুগ্রহ স্থাপনের জন্য আমার সামান্য সরবরাহের সামর্থ্য সরবরাহ করতে প্রস্তুত ...
অ্যারিক

আর একটি সমাধান হ'ল ইনপুট প্রাক-প্রক্রিয়াজাতকরণ, যেমন সমস্ত 4 ঘূর্ণন নেটওয়ার্কে খাওয়ানোর আগে একই চিত্রে রূপান্তরিত হয়।
ব্লুমুন 93

উত্তর:


4

যদি আমি ভালভাবে বুঝতে পারি তবে আপনার একক আউটপুট নোডটি মাঝের বর্গের পরবর্তী স্থিতি হবে। আপনার কাছে মডেলটি প্রশিক্ষণের জন্য পর্যাপ্ত সংস্থান থাকা অবস্থায় লুকানো স্তরগুলিতে নোডের সংখ্যা সম্পর্কে চিন্তা করার দরকার নেই। এই সমস্যাটি নিউরাল নেটওয়ার্কের জন্য শেখা খুব সহজ তাই কোনও আকারের উদ্বেগ নেই।

আপনাকে তদারকি প্রশিক্ষণ করা দরকার যার অর্থ আপনাকে ইনপুট ডেটা এবং মিলের প্রত্যাশিত আউটপুট খাওয়াতে হবে। আপনার নিশ্চিত হওয়া দরকার যে আপনার প্রশিক্ষণ ডেটাতে সমস্ত 4 আবর্ত একই আউটপুটে বরাদ্দ করা হয়েছে। এইভাবে আপনার নেটওয়ার্ককে এগুলির সাথে একইভাবে আচরণ করা শিখতে হবে।

আপনি আমাকে কৌতূহলী করে তোলেন তাই আমি নিজে চেষ্টা করেছিলাম। আমার দ্রবণটি আমার পুরানো ল্যাপটপে কয়েক সেকেন্ডের মধ্যে চলমান প্রায় 20 টি যুগে 100% সঠিক শিখতে পারে। আমি কেবলমাত্র আউটপুটটিকে [0,1] বা [1,0] কে শ্রেণিবদ্ধ হিসাবে পরিবর্তন করেছি তবে এটি আপনি সন্ধান করছেন এমন একই ফলাফল দেয়। ঠিক এখানে রেফারেন্সের জন্য অজগরে লেখা কোডটি:

from keras.models import Sequential
from keras.layers import Input, Dense
from keras.models import Model
from keras import optimizers
from keras.utils.np_utils import to_categorical
import helper

x_,y_ = helper.fnn_csv_toXY("conway.csv","output",False)
y_binary = to_categorical(y_)

model = Sequential()
model.add(Dense(100, activation='relu', kernel_initializer='glorot_uniform',input_shape =(9,)))
model.add(Dense(20, activation='relu', kernel_initializer='glorot_uniform'))
model.add(Dense(2, activation='softmax'))
adam=optimizers.Adam()
model.compile(optimizer=adam,
              loss='categorical_crossentropy',
              metrics=['acc'])
model.fit(x_, y_binary, epochs=100)

আমি যে নেটওয়ার্কটি ব্যবহার করব তা আমার দ্বারা লিখিত কোনও শ্রেণীর দ্বারা অনুকরণ করা হবে, তাই স্মৃতিচারণের উদ্বেগ।
Aric

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

যদি মেমোরি কোনও উদ্বেগ না করে থাকে তবে আমি বরং বলছি যে কারণগুলির কারণে একই কারণে নেটওয়ার্কটি এই অপারেশনটি সম্পাদন করে। প্রাক-প্রক্রিয়াজাতকরণটি সরল করে নেটওয়ার্ক থেকে কিছু কাজ সরিয়ে দেয়।
Aric

সঠিক, তারপরে প্রাক-প্রসেসিংয়ের জন্য যান। আমি মনে করি এটি দিয়ে প্রশ্নের উত্তর দেওয়া হয়েছে। আপনি যদি মেমরির সমস্যা নিয়ে চলে যান তবে আপনি এটি বাস্তবায়ন করতে বেছে নিতে পারেন। টিপ: ওজনে ভাসমানটি ব্যবহার করুন যা 64৪ এর চেয়ে দ্বিগুণ পরিবর্তে মাত্র 32 বিট নেয় This এটি কম স্মৃতি ব্যবহার করবে।
ম্যাঙ্গো

4

আপনি আপনার সমস্যার জায়গাতে একটি অপ্টিমাইজেশন সনাক্ত করেছেন এবং এটি আপনার নিউরাল নেট এ বেক করার ইচ্ছা desire আমি প্রিপ্রোসেসিংয়ের পরামর্শ দিচ্ছি: আপনার অপ্টিমাইজেশনটি একটি নিউরাল নেট দিয়ে রচনা করুন যা আপনি যা চান তার একটি সাবসেট করে।

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

আপনার নরমালাইজারটি এলোমেলো ইনপুট উত্পন্ন করে চারটি সম্ভাব্য রূপান্তরকে ঘুরিয়ে, প্রতিটিটিতে নরমালাইজার চালান, তারপরে পরীক্ষা করুন যে তারা সমস্ত সমান।


1

এটি সম্পর্কে বিশুদ্ধ হতে, চারটি আকারের বৃত্তাকার অ্যারে হিসাবে প্রতিটি আইটেম এবং এক বিট বিট যুক্ত প্রতিটি আইটেম হিসাবে ইনপুটটি আলাদাভাবে বিবেচনা করে শুরু করুন:

... 01, 01, 11, 10 ...

0

নেটওয়ার্কের নকশা জুড়ে, এই বৃত্তাকার কাঠামো এবং সেন্টার পয়েন্টের দৃষ্টান্তটি চালিয়ে যান।

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