Je suis la formation d'un réseau de neurones en utilisant Keras et Théano, où les entrées ont un format semblable:Keras: Comment concaténer sur un sous-ensemble d'entrées
[
[Situation features],
[Option 1 features],
[Option 2 features],
]
Je veux former un modèle pour prédire la fréquence de chaque l'option sera choisie, en faisant en sorte que le modèle apprenne à noter chaque option, et comment la situation rend les différences de score plus ou moins importantes.
Mon modèle ressemble:
option_inputs = [Input(shape=(NUM_FEATURES,), name='situation_input'),
Input(shape=(NUM_FEATURES,), name='option_input_0'),
Input(shape=(NUM_FEATURES,), name='option_input_1')]
situation_input_processing = Dense(5, activation='relu', name='situation_input_processing')
option_input_processing = Dense(20, activation='relu', name='option_input_processing')
diversity_neuron = Dense(1, activation='softplus', name='diversity_neuron')
scoring_neuron = Dense(1, activation='linear', name='scoring_neuron')
diversity_output = diversity_neuron(situation_input_processing(journey_inputs[0]))
scoring_outputs = [scoring_neuron(option_input_processing(option_input)) for option_input in option_inputs[1:2]]
logit_outputs = [Multiply()([diversity_output, scoring_output]) for scoring_output in scoring_outputs]
probability_outputs = Activation('softmax')(keras.layers.concatenate(logit_outputs, axis=-1))
model = Model(inputs=option_inputs, outputs=probability_outputs)
Lorsque vous essayez d'obtenir probability_outputs
, je reçois l'erreur:
ValueError:
Concatenate
layer should be called on a list of inputs
L'erreur semble être déclenchée parce que logit_outputs
n'est pas construit itérer toutes les 3 entrées collections de fonctionnalités, seulement sur 2 d'entre eux.
Une idée de comment contourner ce problème? Une fois le modèle formé, je souhaite observer les sorties diversity_neuron
et scoring_neuron
pour apprendre comment extrapoler la notation pour un nombre arbitraire d'options et comprendre ce qui motive la diversité.
Essayez: 'logit_outputs = [Multiplier ([diversity_output, scoring_output]) pour scoring_output dans scoring_outputs] ' –