无法使用keras将嵌入层添加到暹罗网络
Unable to add Embedding layer to a siamese network using keras
我正在尝试更改孪生网络的示例代码并添加一个嵌入层,如下所示:
data_dim = 16
timesteps = 8
nb_classes = 10
encoder = Sequential()
encoder.add(Embedding(data_dim, 4, input_length=timesteps))
encoder.add(LSTM(32))
model = Graph()
model.add_input(name='input_a', input_shape=(timesteps,))
model.add_input(name='input_b', input_shape=(timesteps,))
model.add_shared_node(encoder,
name='shared_encoder',
inputs=['input_a', 'input_b'],
merge_mode='concat')
model.add_node(Dense(64, activation='relu'), name='fc1', input='shared_encoder')
model.add_node(Dense(3, activation='softmax'), name='output', input='fc1',
create_output=True)
model.compile(optimizer='adam', loss={'output': 'categorical_crossentropy'})
这与他们文档中的 last example 非常接近。
不幸的是,我一直收到错误消息:
TypeError: DataType float32 for attr 'Tindices' not in list of allowed values: int32, int64
有人可以帮忙吗?
model.add_input(name='input_a', input_shape=(timesteps,), dtype='int')
model.add_input(name='input_b', input_shape=(timesteps,), dtype='int')
我正在尝试更改孪生网络的示例代码并添加一个嵌入层,如下所示:
data_dim = 16
timesteps = 8
nb_classes = 10
encoder = Sequential()
encoder.add(Embedding(data_dim, 4, input_length=timesteps))
encoder.add(LSTM(32))
model = Graph()
model.add_input(name='input_a', input_shape=(timesteps,))
model.add_input(name='input_b', input_shape=(timesteps,))
model.add_shared_node(encoder,
name='shared_encoder',
inputs=['input_a', 'input_b'],
merge_mode='concat')
model.add_node(Dense(64, activation='relu'), name='fc1', input='shared_encoder')
model.add_node(Dense(3, activation='softmax'), name='output', input='fc1',
create_output=True)
model.compile(optimizer='adam', loss={'output': 'categorical_crossentropy'})
这与他们文档中的 last example 非常接近。
不幸的是,我一直收到错误消息:
TypeError: DataType float32 for attr 'Tindices' not in list of allowed values: int32, int64
有人可以帮忙吗?
model.add_input(name='input_a', input_shape=(timesteps,), dtype='int')
model.add_input(name='input_b', input_shape=(timesteps,), dtype='int')