اطلاعیه

Collapse
No announcement yet.

تغییر تابع تبدیل شبکه عصبی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تغییر تابع تبدیل شبکه عصبی

    دوستان کسی تا به حال تابع تبدیل (transfer function) تعریف کرده برای شبکه عصبی؟
    در واقع متلب امکان این رو داره که برای شبکه عصبی یک تابع جدید تعریف کنیم. آیا اینکار و انجام دادید؟
    It's nice to be important but it's important to be nice!

    از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

    #2
    پاسخ : تغییر تابع تبدیل شبکه عصبی

    میشه بیشتر توضیح بدی منظورت چیه؟
    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    دیدگاه


      #3
      پاسخ : تغییر تابع تبدیل شبکه عصبی

      یعنی مثلا به جای تابع tansig یه تابع خودساخته داشته باشیم که فرمولش دست خودمون هست!
      ممنون از کمکت
      It's nice to be important but it's important to be nice!

      از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

      دیدگاه


        #4
        پاسخ : تغییر تابع تبدیل شبکه عصبی


        net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

        newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) takes optional inputs,
        P - RxQ1 matrix of Q1 representative R-element input vectors.
        T - SNxQ2 matrix of Q2 representative SN-element target vectors.
        Si - Sizes of N-1 hidden layers, S1 to S(N-1), default = [].
        (Output layer size SN is determined from T.)
        and returns an N layer feed-forward backprop network.
        TFi - Transfer function of ith layer. Default is 'tansig' for
        hidden layers, and 'purelin' for output layer
        .
        BTF - Backprop network training function, default = 'trainlm'.
        BLF - Backprop weight/bias learning function, default = 'learngdm'.
        PF - Performance function, default = 'mse'.
        IPF - Row cell array of input processing functions.
        Default is {'fixunknowns','remconstantrows&#03 9;,'mapminmax'}.
        OPF - Row cell array of output processing functions.
        Default is {'remconstantrows','mapminmax' }.
        DDF - Data division function, default = 'dividerand';
        and returns an N layer feed-forward backprop network.

        The transfer functions TF{i} can be any differentiable transfer
        function such as TANSIG, LOGSIG, or PURELIN.


        فکر می کنم کافیه تابع مورد نظرت رو تعریف کنی و اسم اون رو جای پارامتر TF بذاری.
        مثلاً
        کد PHP:
        TF = {'tansig','purelin'}; 

        یعنی تابع انتقال لایه اول(لایه مخفی) tansig و لایه دوم (لایه خروجی) purelin هستن.
        لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
        لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
        با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
        اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
        يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

        دیدگاه


          #5
          پاسخ : تغییر تابع تبدیل شبکه عصبی

          نه یه کم دنگ و فنگ داره. باید یه فایل my_transfer تعریف بشه که برنامه ش به صورت زیره ولی خوب فرصت نکردم دقیق بفهممش. گفتم شاید قبلا کسی کار کرده.


          function out1 = template_transfer(in1,in2,in3,in4)
          %TEMPLATE_TRANSFER Template transfer function.
          %
          % Obsoleted in R2010b NNET 7.0. Last used in R2010a NNET 6.0.4.
          %
          % WARNING - Future versions of the toolbox may require you to update
          % custom functions.
          %
          % Directions for Customizing
          %
          % 1. Make a copy of this function with a new name
          % 2. Edit your new function according to the code comments marked ***
          % 3. Type HELP NNTRANSFER to see a list of other transfer functions.
          %
          % Syntax
          %
          % A = template_transfer(N,FP)
          % dA_dN = template_transfer('dn',N,A,FP)
          % INFO = template_transfer(CODE)
          %
          % Description
          %
          % TEMPLATE_TRANSFER(N,FP) takes N and optional function parameters,
          % N - SxQ matrix of net input (column) vectors.
          % FP - Struct of function parameters (ignored).
          % and returns A, the SxQ boolean matrix with 1's where N >= 0.
          %
          % TEMPLATE_TRANSFER('dn',N,A,FP) returns SxQ derivative of A w-respect to N.
          % If A or FP are not supplied or are set to [], FP reverts to
          % the default parameters, and A is calculated from N.
          %
          % TEMPLATE_TRANSFER('name&#039 returns the name of this function.
          % TEMPLATE_TRANSFER('output',FP) returns the [min max] output range.
          % TEMPLATE_TRANSFER('active',FP) returns the [min max] active input range.
          % TEMPLATE_TRANSFER('fullderiv&#039 returns 1 or 0, whether DA_DN is SxSxQ or SxQ.
          % TEMPLATE_TRANSFER('fpnames&#039 returns the names of the function parameters.
          % TEMPLATE_TRANSFER('fpdefaults&#039 returns the default function parameters.
          %
          % Network Use
          %
          % To change a network so a layer uses TEMPLATE_TRANSFER set
          % NET.layer{i}.transferFcn to 'template_transfer.

          % Copyright 1992-2010 The MathWorks, Inc.

          fn = mfilename;
          boiler_transfer

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Name
          function n = name

          % *** CUSTOMIZE HERE
          % *** Define this functions human readable name
          n = 'Template';
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Output range
          function r = output_range(fp)

          % *** CUSTOMIZE HERE
          % *** Return min and max values that this function can generate
          r = [-1 1];
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Active input range
          function r = active_input_range(fp)

          % *** CUSTOMIZE HERE
          % *** Return min and max values for the interval where this function
          % *** appreciably changes. If the function repeats, choose a repetition interval.
          r = [-pi pi];
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Parameter Defaults
          function fp = param_defaults
          fp.param1 = 1;
          fp.param2 = 2;
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Parameter Names
          function names = param_names

          % *** CUSTOMIZE HERE
          % *** Defined human readable names for this functions parameters, if any
          names = {'Param One', 'Param Two'};
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Parameter Check
          function err = param_check(fp)
          err = [];

          % *** CUSTOMIZE HERE
          % *** Return an error string if any function parameter is not defined properly.
          if (fp.param1 < -1000)
          err = 'Argument One is less than -1000';
          elseif (fp.param2 == 20)
          err = 'Argument Two is 20';
          end
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Apply Transfer Function
          function a = apply_transfer(n,fp)

          % *** CUSTOMIZE HERE
          % *** Return an error string if any function parameter is not defined properly.
          a = sin(n);
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Derivative of Y w/respect to X
          function da_dn = derivative(n,a,fp)

          % *** CUSTOMIZE HERE
          % *** Return an error string if any function parameter is not defined properly.
          da_dn = cos(n);
          % ***

          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
          It's nice to be important but it's important to be nice!

          از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

          دیدگاه


            #6
            پاسخ : تغییر تابع تبدیل شبکه عصبی

            حق داری، فهمیدنش وقت گیره. ولی چیزی که گفتم رو هم امتحان کن چون به نظرم درسته. فقط باید شرط های یک تابع انتقال رو رعایت کنی تا خطا نده. اگه خودم وقت داشتم انجام میدادم ولی فکر کنم از این که بخوای این تابع طولانی رو تجزیه و تحلیل کنی بهتر باشه.
            لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
            لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
            با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
            اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
            يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

            دیدگاه


              #7
              پاسخ : تغییر تابع تبدیل شبکه عصبی

              نوشته اصلی توسط هـادی
              حق داری، فهمیدنش وقت گیره. ولی چیزی که گفتم رو هم امتحان کن چون به نظرم درسته. فقط باید شرط های یک تابع انتقال رو رعایت کنی تا خطا نده. اگه خودم وقت داشتم انجام میدادم ولی فکر کنم از این که بخوای این تابع طولانی رو تجزیه و تحلیل کنی بهتر باشه.
              یعنی به نظرت اگر تو کدهای متلب دست ببرم بهتره؟ مثلا برم داخل کد به جای tansig رو چیزی بذارم که خودم میخوام تا موقع فراخوانی تابع من رو بیاره؟ یا همونجا تو شبکه feedforward بیام تابع جدید تعریف کنم؟ منظورت اینه؟ میدونی شبکه backpropagation آدم رو بیچاره میکنه آخرش هم نمیفهمی چی به چیه!
              باید یه نگاه بندازم ببینم میشه.
              It's nice to be important but it's important to be nice!

              از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

              دیدگاه


                #8
                پاسخ : پاسخ : تغییر تابع تبدیل شبکه عصبی

                نوشته اصلی توسط رضا شفقی
                یعنی به نظرت اگر تو کدهای متلب دست ببرم بهتره؟ مثلا برم داخل کد به جای tansig رو چیزی بذارم که خودم میخوام تا موقع فراخوانی تابع من رو بیاره؟ یا همونجا تو شبکه feedforward بیام تابع جدید تعریف کنم؟ منظورت اینه؟ میدونی شبکه backpropagation آدم رو بیچاره میکنه آخرش هم نمیفهمی چی به چیه!
                باید یه نگاه بندازم ببینم میشه.
                نه فقط تابع tansig رو نگاه کن تا خروجی تابعی که میخوای جانشین اون کنی شبیه خروجی tansig باشه (از نظر تعداد خروجی ها و شکل ماتریس)، خودت یک تابع بنویس و اسم بذار براش حالا هر اسمی دوست داری مثلاً rezatf بعد توی newff اون تابع رو تو قسمت TF بده. مثلاً
                کد PHP:
                TF = {'rezaft','purelin'} 

                امتحان کن ببین نتیجه میده؟
                ___________
                چرا میخوای تابع انتقال شبکه عصبی رو عوض کنی؟ چیز خاصی مدنظرت هست یا فقط میخوای امتحان کنی؟
                لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                دیدگاه


                  #9
                  پاسخ : تغییر تابع تبدیل شبکه عصبی

                  نوشته اصلی توسط هـادی
                  نه فقط تابع tansig رو نگاه کن تا خروجی تابعی که میخوای جانشین اون کنی شبیه خروجی tansig باشه (از نظر تعداد خروجی ها و شکل ماتریس)، خودت یک تابع بنویس و اسم بذار براش حالا هر اسمی دوست داری مثلاً rezatf بعد توی newff اون تابع رو تو قسمت TF بده. مثلاً
                  کد PHP:
                  TF = {'rezaft','purelin'} 

                  امتحان کن ببین نتیجه میده؟
                  همچنان دارم میگردم دنبال محل فراخوانی توابع انتقال :|

                  نوشته اصلی توسط هـادی
                  چرا میخوای تابع انتقال شبکه عصبی رو عوض کنی؟ چیز خاصی مدنظرت هست یا فقط میخوای امتحان کنی؟
                  مثلا wavelet neural network
                  It's nice to be important but it's important to be nice!

                  از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

                  دیدگاه


                    #10
                    پاسخ : تغییر تابع تبدیل شبکه عصبی

                    هر چی newff رو نگاه میکنم بیشتر به این نتیجه میرسم که تو این فایل فقط داره قسمتهای مختلف رو تعریف میکنه. مثلا یه رشته تعریف میکنه برای هر لایه که مقدارش مثلا هست :
                    'tansig' یا موارد دیگه که تو پوشه nntransfer تعریف شده. حالا اینکه کجا مقدار اصلی تابع فراخوانی بشه یعنی مثلا می نویسی a = hardlim(n); تابع موردنظر فراخوانی میشه ولی داخل فایل newff و یا train هیچی پیدا نکردم! الانم اینجوریم! oo:
                    It's nice to be important but it's important to be nice!

                    از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

                    دیدگاه


                      #11
                      پاسخ : تغییر تابع تبدیل شبکه عصبی

                      حق داری پیدا کردن جایی که تابع انتقال فراخوانی میشه خیلی سخته، تابع train، تابع آموزش مثلاً trainlm رو فراخوانی می کنه و خود trainlm هم خیلی از توابع دیگه که همشون هم متغیر net رو دارن که اسم تابع انتقال داخل این متغیر ذخیره شده.
                      فکر می کنم خودت از اول شبکه عصبی بنویسی راحت تر باشه، من قبلاً یک مورد شبکه عصبی با یک لایه و به روش Backpropagation نوشته بودم، فکر می کنم حداکثر یک روز طول بکشه.
                      لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                      لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                      با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                      اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                      يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                      دیدگاه


                        #12
                        پاسخ : تغییر تابع تبدیل شبکه عصبی

                        مشکل حل شد. کافیه یه کپی از مثلا 'purelin' تو پوشه خودت بزنی و بعد یه کم تغییر داخلش ایجاد کنی. بقیه حله!
                        همین template_transfer هم که گفتم دقیقا ساختارش مربوط به توابع متلب هست.
                        It's nice to be important but it's important to be nice!

                        از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

                        دیدگاه

                        لطفا صبر کنید...
                        X