Граф отключил проблему в Керасе - PullRequest
0 голосов
/ 02 марта 2019

Архитектура, которую я хочу реализовать

Я хочу реализовать эту архитектуру с помощью функционального API Keras.Я новичок в этом, и вот мой код (который застревает при объединении входов).

# Arbitrary dimension for all embeddings
embedding_dim = 10

# Quarter hour of the day embedding
input_quarter_hour = Input(shape=(1,))
embed_quarter_hour = Embedding(metadata['n_quarter_hours'], embedding_dim, input_length=1)(input_quarter_hour)
embed_quarter_hour = Reshape((embedding_dim,))(embed_quarter_hour)

# Day of the week embedding
input_day_of_week = Input(shape=(1,))
embed_day_of_week = Embedding(metadata['n_days_per_week'], embedding_dim, input_length=1)(input_day_of_week)
embed_day_of_week = Reshape((embedding_dim,))(embed_day_of_week)

# Week of the year embedding
input_week_of_year = Input(shape=(1,))
embed_week_of_year = Embedding(metadata['n_weeks_per_year'], embedding_dim, input_length=1)(input_week_of_year)
embed_week_of_year = Reshape((embedding_dim,))(embed_week_of_year)

# Client ID embedding
input_client_ids = Input(shape=(1,))
embed_client_ids = Embedding(metadata['n_client_ids'], embedding_dim, input_length=1)(input_client_ids)
embed_client_ids = Reshape((embedding_dim,))(embed_client_ids)

# Taxi ID embedding
input_taxi_ids = Input(shape=(1,))
embed_taxi_ids = Embedding(metadata['n_taxi_ids'], embedding_dim, input_length=1)(input_taxi_ids)
embed_taxi_ids = Reshape((embedding_dim,))(embed_taxi_ids)

# Taxi stand ID embedding
input_stand_ids = Input(shape=(1,))
embed_stand_ids = Embedding(metadata['n_stand_ids'], embedding_dim, input_length=1)(input_stand_ids)
embed_stand_ids = Reshape((embedding_dim,))(embed_stand_ids)

# GPS coordinates (5 first lat/long and 5 latest lat/long, therefore 20 values)

coords_in = Input(shape=(20,))
coords_out = Dense(1, input_dim=20, init='normal')(coords_in)

#model = Sequential()

concatenated = concatenate([
            embed_quarter_hour,
            embed_day_of_week,
            embed_week_of_year,
            embed_client_ids,
            embed_taxi_ids,
            embed_stand_ids,
            coords_out
        ])
out = Dense(500, activation='relu')(concatenated)

out = Dense(len(clusters),activation='softmax',name='output_layer')(out)

cast_clusters = K.cast_to_floatx(clusters)
def destination(probabilities):
    return tf.matmul(probabilities, cast_clusters)

out = Activation(destination)(out)

model = Model(concatenated,out)

Я получаю эту ошибку:

График отключен: невозможно получитьзначение для тензора Tensor ("input_64: 0", shape = (?, 1), dtype = float32) на слое "input_64".Следующие предыдущие уровни были доступны без проблем: [].

Я предполагаю, что проблема связана с размером моих тензоров ... Но я сейчас не знаю, как отлаживать этот вид кода.

1 Ответ

0 голосов
/ 03 марта 2019

При создании экземпляра Keras Model вы должны передать список всех входных данных модели.Переменная concatenated, которую вы используете в своем коде, не содержит входных данных, а вместо этого содержит выходные данные определенных слоев.Более того, вы не должны объединять свои входные данные, а просто использовать список.

Следующий код должен работать:

inputs = [
    input_quarter_hour,
    input_day_of_week,
    input_week_of_year,
    input_client_ids,
    input_taxi_ids,
    input_stand_ids,
    coords_in
]
model = Model(inputs=inputs, outputs=out)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...