अगर मैंने एक केरस तंत्रिका नेटवर्क मॉडल का निर्माण किया है तो ऐसा दिखता है:

मॉडल 1: इनपुट -> परत1

मॉडल 2: इनपुट -> लेयर 1 -> लेयर 2 -> ऑपरेशन -> लेयर 3 -> आउटपुट

मैं मॉडल 1 के लेयर 1 के परिणाम और मॉडल 2 के लेयर 2 के परिणाम के बीच कुछ गणना करना चाहता हूं, मैं क्या कर सकता हूं? मैंने गणना करने के लिए कुछ Tensorflow कोड का उपयोग करने की कोशिश की लेकिन असफल रहा। क्या कोई रास्ता है जिससे मैं अपने लक्ष्य तक पहुँच सकता हूँ?

0
Victor. L 15 जून 2018, 01:02

1 उत्तर

सबसे बढ़िया उत्तर

आप इस उद्देश्य के लिए Keras कार्यात्मक API का उपयोग कर सकते हैं:

from keras import layers
from keras import models

# define model 1 architecture
m1_input = layers.Input(shape=('arbitrary shape'))
m1_layer1 = layers.SomeLayer()(m1_input)

# define model 2 architecture
m2_input = layers.Input(shape=('arbitrary shape'))
m2_layer1 = layers.SomeLayer()(m2_input)
m2_layer2 = layers.SomeLayer()(m2_layer1)
merge_m1 = layers.Lambda(SomeOperation)([m1_layer1, m2_layer2])
m2_layer3 = layers.SomeLayer()(merge_m1)
m2_output = layers.SomeLayer()(m2_layer3)

# define the final model
model = models.Model(inputs=[m1_input, m2_input], outputs=[m2_output])

उपरोक्त कोड में, SomeOperation एक फंक्शन होना चाहिए। लैम्ब्डा परत के बारे में अधिक जानकारी के लिए दस्तावेज देखें। केरस में। वैकल्पिक रूप से, केरस में कुछ सरल अंतर्निर्मित मर्ज परतें हैं जैसे जोड़ें या सम्मिलित करें, जिसका उपयोग आप लैम्ब्डा परत के बजाय कर सकते हैं।

1
today 15 जून 2018, 12:12