Keras嵌入层不接受输入

我正在尝试创建一个预测模型,该模型利用滞后特征和嵌入来预测未来10天的累积价值。通过将订单篮与gensim一起使用来训练嵌入层。

下面是我的网络:


from keras.layers import Embedding,flatten,Input,Dense,Dropout,activation

inp = Input(shape=(1,)) #ucode length will be 1  
x = Embedding(len(model.wv.vocab),WV_DIM,weights=[model.wv.vectors],trainable=False)(inp)
x = flatten()(x)
x = Dense(32,activation='relu',name='Embedding_out')(x)

features_input = Input(shape=(122,)) ##lag Features
concat = concatenate([features_input,x],name="concatenatedwFeatures")
output = Dense(256,activation="relu",name="L1_Relu")(concat) 
output = Dense(128,name="L2_Relu")(output)
output = Dense(1)(output) 

EmbeddingModel = Model(inputs=[inp,features_input],outputs=output)
EmbeddingModel.summary()

adam = optimizers.adam(clipvalue=1.,lr=3e-4) 
EmbeddingModel.compile(loss='mse',optimizer=adam,metrics = ['mae','mse'])

hist = EmbeddingModel.fit([ucode_array[20:25],X_train[20:25]],[y_train[20:25]],validation_split=0.05,epochs=10,batch_size=32)
Error:
ValueError: could not convert string to float: 'I33946'


Input Values:
ucode_array=sales_train_grid['ucode']
ucode_array[20:25]

15683    I33946
15685    I33946
15687    I33946
15688    126310
15689    126310
Name: ucode,dtype: object

测试值是否在嵌入层中存在

test1=model.wv.most_similar(positive=['I00731'],topn=10)
display(test1)
[x[0] for x in test1]

返回10个相似的对象。如果我粘贴了任何随机值,则不返回任何值。

尝试以下操作: 1. ucode_array [20:25] .values 2. ucode_array [20:25] .values.tolist()


gensim版本:3.4.0 TensorFlow版本:1.12.0

superursine 回答:Keras嵌入层不接受输入

检查此, 使用float将字符串转换为浮点数。我想这会解决您的问题。

,

通常,我们必须将数值输入training流程中。 确保将所有objectstrings转换为嵌入将解决此问题。

介绍我们实际上要进行的基本预处理操作,以供其他人发现。

示例代码。

tokenizer = Tokenizer()
tokenizer.fit_on_texts(list(model.wv.vocab.keys())
encoded_ucode = tokenizer.texts_to_sequences(ucode_array)
本文链接:https://www.f2er.com/2991992.html

大家都在问