শেষ স্তরে কেরাস একাধিক "সফটম্যাক্স" সম্ভব?


10

শেষ স্তরে একাধিক সফটম্যাক্স

কেরাসের শেষ স্তরে একাধিক সফটম্যাক্স প্রয়োগ করা সম্ভব? সুতরাং নোডের যোগফল 1-4 = 1; 5-8 = 1; প্রভৃতি

আমার কি আলাদা নেটওয়ার্ক ডিজাইনের জন্য যাওয়া উচিত?

উত্তর:


7

আমি কার্যকরী ইন্টারফেস ব্যবহার করব।

এটার মতো কিছু:

from keras.layers import Activation, Input, Dense
from keras.models import Model
from keras.layers.merge import Concatenate

input_ = Input(shape=input_shape)

x = input_
x1 = Dense(4, x)
x2 = Dense(4, x)
x3 = Dense(4, x)
x1 = Activation('softmax')(x1)
x2 = Activation('softmax')(x2)
x3 = Activation('softmax')(x3)
x = Concatenate([x1, x2, x3])

model = Model(inputs=input_, outputs=x)

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

1
@ নিলস্ল্যাটার আপনি একদম ঠিক আছেন আমার কেন কোনও ভিন্ন ব্যয় ফাংশন প্রয়োজন তা আমার ধারণা নেই। আপনি আমাকে বলতে পারেন কেন এটি গুরুত্বপূর্ণ?
আর্থারডেন্ট

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

1
@ আর্থারডেন্ট:। । । যদিও আমি এটিকে আরও বিশদে বিবেচনা করছি এবং সফটম্যাক্স সহ মাল্টিক্লাস ক্রস এনট্রপির জন্য লগিতে গ্রেডিয়েন্ট যা কেবল th still এখনও প্রয়োগ এবং সফলভাবে কাজ করতে পারে। একটি সাধারণ সফটম্যাক্স আউটপুট অবশ্যই একসাথে 3 ক্লাস শিখতে ব্যর্থ হবে, তবে সম্ভবত এই উত্তরটি আপনার সর্বোপরি প্রয়োজন। । । Y^-Y
নিল স্লেটার

1
মেট্রিকের ব্যবহার উদাহরণস্বরূপ categorical_accuracyএবং predict_classesপদ্ধতিগুলির জন্য আরও চিন্তাভাবনা প্রয়োজন। । ।
নীল স্লেটার

5

এটি সম্ভব আপনার নিজস্ব সফটম্যাক্স ফাংশনটি বাস্তবায়ন করা। আপনি অংশগুলিতে একটি টেনসর বিভক্ত করতে পারেন, তারপরে অংশ হিসাবে পৃথকভাবে সফটম্যাক্স গণনা করুন এবং টেনসর অংশগুলি সংমিশ্রণ করতে পারেন:

def custom_softmax(t):
    sh = K.shape(t)
    partial_sm = []
    for i in range(sh[1] // 4):
        partial_sm.append(K.softmax(t[:, i*4:(i+1)*4]))
    return K.concatenate(partial_sm)

concatenate অক্ষ ছাড়াই শেষ অক্ষের মাধ্যমে যুক্তিযুক্ত (আমাদের ক্ষেত্রে অক্ষ = 1)।

তারপরে আপনি এই অ্যাক্টিভেশন ফাংশনটি কোনও গোপন স্তরে অন্তর্ভুক্ত করতে পারেন বা এটিকে কোনও গ্রাফে যুক্ত করতে পারেন।

Dense(activation=custom_activation)

অথবা

model.add(Activation(custom_activation))

আপনাকে একটি নতুন ব্যয়ের ক্রিয়াও সংজ্ঞায়িত করতে হবে।

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