Tensorflow Κεράς σύνθετο Μοντέλο

ψήφοι
0

Θέλω να κάνω ένα μοντέλο που αποτελείται από άλλα μοντέλα που υποστηρίζει διάφορες στρατηγικές κατάρτισης. Οι κύριοι στόχοι είναι:

  • Ένα μοντέλο για είσοδο που έχει ένα καθορισμένο input_shape, μερικά στρώματα, και ένα μονό στρώμα εξόδου
  • Στη συνέχεια, Ν πρόσθετα μοντέλα όλα συνδεδεμένα με το μοντέλο εισόδου
  • Ένα πρόσθετο Μοντέλο που συνθέτει τα ανωτέρω μικρότερα μοντέλα σε ένα μεγάλο μοντέλο multi-εξόδου

Θα μπορούσα βέβαια ακριβώς οικοδομήσουμε αυτό ως ένα μεγάλο μοντέλο, αλλά έχω μια συγκεκριμένη δέσμη των πειραμάτων κατάρτισης θα ήθελα σύνθετο μοντέλο μου για την υποστήριξη:

  • Εκπαίδευσε το σύνολο του δικτύου μαζί
  • Σιδηροδρομικός 1 έως Ν εξόδους
    • Μόνο που πραγματοποιεί ορισμένες διαδρομές, αλλά πολλαπλασιαστικό αλλαγές σε όλη τη διαδρομή μέσα από το μοντέλο εισόδου
    • Υποστήριξη της κατάρτισης των επιμέρους μοντέλα από μόνα τους (η οποία είναι ο λόγος που έχω σκεφτεί να οικοδομήσουμε αυτό ως ένα σύνθετο των άλλων μοντέλων σε σχέση με ένα μεγάλο)

Σε ψευδοκώδικα:

def build_model_a(input_layer):
    ... build model a using input_layer arg as input...
    model = Model(inputs=input_layer,
                  outputs=output_layer)
    model.compile(...)
    return model




input_model = build_input_model(args)
model_a = build_model_a(input_model.output)
model_b = build_model_b(input_model.output)

composite_model = Model(inputs=input_model.input,
                        outputs=[model_a.output,
                                 model_b.output])

# train from input_model through model_a but don't change model_b weights
model_b.trainable = False
composite_model.fit(...)

# train from input_model through model_b but don't change model_a weights
model_a.trainable = False
model_b.trainable = True
composite_model.fit(...)

# train from input_model through model_a but don't change model_b weights
model_b.trainable = True
model_a.trainable = True
composite_model.fit(...)

# Train just input_model
input_model.fit(...)

# Eval through entire model
composite_model.predict(xs)

Αυτή είναι σημερινή προσέγγιση μου, η οποία οδηγεί σε ένα σφάλμα:

AttributeError: 'Model' object has no attribute '_name'

Αυτό με κάνει να πιστεύω ότι δεν πρόκειται γι 'αυτό σωστά, έτσι είμαι ελπίζοντας για άλλη συμβουλή ή αναφορές. Είμαι αρκετά σίγουρος ότι αυτό μπορεί να γίνει με Κεράς λειτουργική API, αλλά είμαι αγωνίζονται για να το κάνετε σωστά.

Είμαι, επίσης, δεν είναι σαφές, αν χρησιμοποιείτε αυτή την προσέγγιση με trainable = False, δεν επιτρέπεται. Με βάση τις προειδοποιήσεις από την εφαρμογή τρέχει χρειάζεται να μεταγλωττίσετε ξανά αυτά τα μοντέλα μετά την αλλαγή του εκπαιδεύσιμα σημαία ...

Δημοσιεύθηκε 08/11/2018 στις 00:04
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Τουλάχιστον για το πρώτο σκέλος του ερωτήματος, μπορείτε να χρησιμοποιήσετε τα μοντέλα όπως τα στρώματα που χρησιμοποιούν το λειτουργικό api, δεν χρησιμοποιούν τις εισροές τους, εξόδους. Κάτι σαν αυτό:

# creation of a model
def build_model_a():
    ... build model create your own input...
    input_layer = Input(shape=i_shape)
    model = Model(inputs=input_layer,
                  outputs=output_layer)
    model.compile(...)
    return model

# model creations
input_model = build_input_model(args)
model_a = build_model_a()
model_b = build_model_b()

#connect models
input_layer = Input(shape=i_shape)
middle = input_model(input_layer)
out_a = model_a(middle )
out_b = model_b(middle )

composite_model = Model(inputs=input_layer ,
                        outputs=[out_a ,
                                 out_b ])

Ίσως κάποιος μπορεί να ολοκληρώσει την απάντηση ή θα είστε σε θέση να ελέγξετε τον εαυτό σας

Απαντήθηκε 08/11/2018 στις 10:46
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more