为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用具有 3D 张量输入的 keras 嵌入层?

如何使用具有 3D 张量输入的 keras 嵌入层?

慕丝7291255 2021-08-24 15:09:02
我在使用 Keras 嵌入层和输入数据的一种热编码时遇到困难。以下是玩具代码。导入包from keras.models import Sequentialfrom keras.layers import Densefrom keras.layers import Flattenfrom keras.layers.embeddings import Embeddingfrom keras.optimizers import Adamimport matplotlib.pyplot as pltimport numpy as npimport openpyxlimport pandas as pdfrom keras.callbacks import ModelCheckpointfrom keras.callbacks import ReduceLROnPlateau输入数据是基于文本的,如下所示。训练和测试数据X_train_orignal= np.array(['OC(=O)C1=C(Cl)C=CC=C1Cl', 'OC(=O)C1=C(Cl)C=C(Cl)C=C1Cl',       'OC(=O)C1=CC=CC(=C1Cl)Cl', 'OC(=O)C1=CC(=CC=C1Cl)Cl',       'OC1=C(C=C(C=C1)[N+]([O-])=O)[N+]([O-])=O'])X_test_orignal=np.array(['OC(=O)C1=CC=C(Cl)C=C1Cl', 'CCOC(N)=O',       'OC1=C(Cl)C(=C(Cl)C=C1Cl)Cl'])Y_train=np.array(([[2.33],       [2.59],       [2.59],       [2.54],       [4.06]]))Y_test=np.array([[2.20],   [2.81],   [2.00]])创建字典现在我创建了两个字典,用于索引副的字符。唯一的字符号存储在len(charset),字符串的最大长度以及 5 个附加字符存储在embed. 每个字符串的开头将被填充,!结尾将是E.charset = set("".join(list(X_train_orignal))+"!E")char_to_int = dict((c,i) for i,c in enumerate(charset))int_to_char = dict((i,c) for i,c in enumerate(charset))embed = max([len(smile) for smile in X_train_orignal]) + 5print (str(charset))print(len(charset), embed)一热编码我将所有火车数据转换为一种热编码,如下所示。def vectorize(smiles):        one_hot =  np.zeros((smiles.shape[0], embed , len(charset)),dtype=np.int8)        for i,smile in enumerate(smiles):            #encode the startchar            one_hot[i,0,char_to_int["!"]] = 1            #encode the rest of the chars            for j,c in enumerate(smile):                one_hot[i,j+1,char_to_int[c]] = 1            #Encode endchar            one_hot[i,len(smile)+1:,char_to_int["E"]] = 1        return one_hot[:,0:-1,:]X_train = vectorize(X_train_orignal)print(X_train.shape)X_test = vectorize(X_test_orignal)print(X_test.shape)当它将输入的训练数据转换为一种热编码时,一种热编码数据的形状变为(5, 44, 14)训练和(3, 44, 14)测试。对于火车,有 5 个示例,0-44 是最大长度,14 是唯一字符。字符数较少的示例被填充E到最大长度。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信