【发布时间】:2019-01-09 13:29:11
【问题描述】:
我已经用这样的预训练词嵌入训练了一个模型:
embedding_matrix = np.zeros((vocab_size, 100))
for word, i in text_tokenizer.word_index.items():
embedding_vector = embeddings_index.get(word)
if embedding_vector is not None:
embedding_matrix[i] = embedding_vector
embedding_layer = Embedding(vocab_size,
100,
embeddings_initializer=Constant(embedding_matrix),
input_length=50,
trainable=False)
架构如下所示:
sequence_input = Input(shape=(50,), dtype='int32')
embedded_sequences = embedding_layer(sequence_input)
text_cnn = Conv1D(filters=5, kernel_size=5, padding='same', activation='relu')(embedded_sequences)
text_lstm = LSTM(500, return_sequences=True)(embedded_sequences)
char_in = Input(shape=(50, 18, ))
char_cnn = Conv1D(filters=5, kernel_size=5, padding='same', activation='relu')(char_in)
char_cnn = GaussianNoise(0.40)(char_cnn)
char_lstm = LSTM(500, return_sequences=True)(char_in)
merged = concatenate([char_lstm, text_lstm])
merged_d1 = Dense(800, activation='relu')(merged)
merged_d1 = Dropout(0.5)(merged_d1)
text_class = Dense(len(y_unique), activation='softmax')(merged_d1)
model = Model([sequence_input,char_in], text_class)
当我将模型转换为 json 时,我得到了这个错误:
ValueError: can only convert an array of size 1 to a Python scalar
同样,如果我使用model.save() 函数,它似乎可以正确保存,但是当我去加载它时,我得到Type Error: Expected Float32。
我的问题是:尝试序列化此模型时是否缺少某些内容?我需要某种Lambda 层或类似的东西吗?
任何帮助将不胜感激!
【问题讨论】:
标签: tensorflow keras word-embedding