इसलिए:
एक-से-एक : आप एक Dense
परत का उपयोग कर सकते हैं क्योंकि आप दृश्यों को संसाधित नहीं कर रहे हैं:
model.add(Dense(output_size, input_shape=input_shape))
एक से कई : यह विकल्प अच्छी तरह से समर्थित नहीं है क्योंकि मॉडल का Keras
पीछा करना बहुत आसान नहीं है , इसलिए निम्न संस्करण सबसे आसान है:
model.add(RepeatVector(number_of_times, input_shape=input_shape))
model.add(LSTM(output_size, return_sequences=True))
कई-से-एक : वास्तव में, आपका कोड स्निपेट (लगभग) इस दृष्टिकोण का एक उदाहरण है:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim)))
कई-कई : यह सबसे आसान स्निपेट है जब इनपुट और आउटपुट की लंबाई आवर्तक चरणों की संख्या से मेल खाती है:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequences=True))
कई-से-कई जब इनपुट / आउटपुट लंबाई से चरणों की संख्या भिन्न होती है : यह केरस में कठिन है। कोड करने के लिए कोई आसान कोड स्निपेट नहीं हैं।
संपादित करें: विज्ञापन ५
मेरे हाल के एक आवेदन में, हमने कुछ ऐसा लागू किया जो 4-छवि से कई-से-कई के समान हो सकता है । यदि आप निम्नलिखित वास्तुकला के साथ एक नेटवर्क रखना चाहते हैं (जब एक इनपुट आउटपुट से अधिक है):
O O O
| | |
O O O O O O
| | | | | |
O O O O O O
आप इसे निम्नलिखित तरीके से प्राप्त कर सकते हैं:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequences=True))
model.add(Lambda(lambda x: x[:, -N:, :]
N
अंतिम चरण की संख्या कहां है जिसे आप कवर करना चाहते हैं (छवि पर N = 3
)।
इस बिंदु से:
O O O
| | |
O O O O O O
| | |
O O O
एक उपयुक्त आकार में इसे समायोजित करने के लिए, वैक्टर के N
साथ उदाहरण के लिए लंबाई के कृत्रिम पैडिंग अनुक्रम के रूप में सरल है 0
।