【问题标题】:Graph disconnected issue in KerasKeras中的图表断开问题
【发布时间】:2019-03-04 11:25:35
【问题描述】:

Architecture I want to implement

我希望用 Keras 函数式 API 来实现这个架构。我是新手,这是我现在的代码(卡在连接输入中)。

# 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”层。 访问以下先前层没有问题:[]。

我猜这个问题源于我的张量的大小......但我现在不知道如何调试这种代码。

【问题讨论】:

    标签: keras


    【解决方案1】:

    在创建 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)
    

    【讨论】:

      猜你喜欢
      • 2019-04-07
      • 1970-01-01
      • 2021-06-17
      • 2021-09-26
      • 2019-10-08
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多