当前位置: 首页 > 知识库问答 >
问题:

如何将ELMo与Keras结合使用,正确输入培训集和标签?

张和豫
2023-03-14

所以我尝试将Elmo与Keras一起使用,我使用了这个Elmo代码,因为它是唯一可训练的Elmo代码

使用此Elmo,嵌入被集成为输入层之后的一个层,因此输入层实际上是一个字符串。然而,我不知道如何在模型中放置输出标签。fit(),它们应该作为字符串以及与输入句子相同的结构输入(但这不起作用),还是应该是1热编码,但如果是,输出标签长度将如何匹配输入句子长度?有什么想法吗?

下面是我的代码片段,我使用我提供输入和输出标签的标签和样本的方式得到的错误(它们是如何提供的)

input_word = layers.Input(shape=(1,), 
                        dtype="string",name='word_input')
input_pred = layers.Input(shape=(1,), 
                     dtype="string",name='pred_input')

embedding1 = ElmoEmbeddingLayer()(input_word)
embedding2 = ElmoEmbeddingLayer()(input_pred)

print('embedding 1 ',embedding1)
embeddingsCon = [embedding1, 
            embedding2]

con11 = keras.layers.concatenate(embeddingsCon)
print('con 11 ',con11)
DenseInjy= layers.Dense(1, activation='relu', name='Dense1')(con11)
print('DenseI',DenseI)


DenseI2= layers.Dense(15, activation='softmax', name='Dense2')(DenseI)

print('DenseI2',DenseI2)

modelI = Model([input_word, input_pred], DenseI2)
modelI.compile(optimizer='adam',
                           loss='categorical_crossentropy',
                           metrics=['categorical_accuracy'])

modelI.fit([train_textEI,train_predIE], train_labelEI,
                       batch_size = 5,
                       epochs = 10 )

Train\U textEI[0]:[[“拉合尔大学学习中心是为教师和员工的专业发展而设立的。”]]

Train\u predEI[0]:[[[“已建立已建立已建立已建立已建立已建立已建立已建立已建立已建立”]]

Train_labelEI[['A0-B A0-I A0-I A0-I A0-I A0-I O P-B O A1-B A1-I A1-I A1-I A1-I A1-I A1-I A1-I A1-I O']INFO: tenorflow: Saver未创建,因为图中没有变量可以恢复I0308 17:55:39.423806 140704918992768]Saver未创建,因为图中没有变量可以恢复result.shapeELMO(?,1024)

形状=(?,1024),dtype=float32)con 11张量(“concatenate\u 12/concat:0”,形状=(?,2048),dtype=float32)DenseI张量(“Dense1\u 10/Relu:0”,形状=(?,1),dtype=float32)DenseI2张量(“Dense2\u 6/Softmax:0”,形状=(?,15),dtype=float32)

错误:检查目标时出错:期望Dense2有2个维度,但得到了带有形状的数组(2905, 1, 1)我认为这与标签如何适合模型有关

共有1个答案

邢昊焜
2023-03-14

train\u textEI应该是字符串的Numpy数组,而不是字符串列表。尝试以下操作:

train_textEI = np.array(train_textEI, dtype=object)
 类似资料:
  • 我的数据可以看作是10B条目的矩阵(100Mx 100),非常稀疏( 我的第一个想法是将数据扩展为密集的,也就是说,将所有10B条目写成一系列CSV,其中大多数条目为零。然而,这很快就压垮了我的资源(即使做ETL也压倒了熊猫,并导致postgres挣扎)。所以我需要使用真正的稀疏矩阵。 我怎样才能用Keras(和Tensorflow)做到这一点?虽然numpy不支持稀疏矩阵,但scipy和tens

  • 这个问题相当抽象,不一定与tensorflow或keras有关。假设您想要训练一个语言模型,并且您想要为您的LSTM使用不同大小的输入。我特别关注这篇论文:https://www.researchgate.net/publication/317379370_A_Neural_Language_Model_for_Query_Auto-Completion. 除其他外,作者使用单词嵌入和一种热字符编

  • 问题内容: 我有一个带有MySQL的远程数据库,并且将我的应用程序用户的照片存储在数据库中,作为LONGTEXT类型的数据库的一行。 我使用Base64将照片转换为字符串。 我使用JSON和PHP连接到远程数据库,因此,我必须使用Base64,因为据我所知,JSON和PHP需要在参数上发送字符串,而使用Base64可以将照片转换为字符串。 可以,但是非常慢。当我加载100 KB的照片时,会花费很多

  • 所以我有一个包含两个片段、一个存储库和一个ViewModel类的活动,因为我遵循Android开发人员的指南来使用MVVM结构。到目前为止,它似乎是有效的,但我不确定在实现方面是否遵循了良好的实践。到目前为止,它看起来是这样的: 存储库类: ViewModel类: 显示图书列表的回收器视图: 片段1 问题: 1) 我用对了吗?我应该在onActivityCreated()或其他地方使用viewMo

  • 问题内容: 我针对正常运行的Web应用程序进行了一系列功能测试,但是每个功能测试都需要通过和注释提供的类级别的设置和拆卸,因此需要JUnit 4.0或更高版本。 现在,我想使用少量的这些功能测试来执行负载测试,这些功能测试可以模拟大量请求Web应用程序相关页面的用户。为了让每个用户在JWebUnit中都有自己的“模拟浏览器”,我需要在JUnitPerf中使用TestFactory来实例化测试中的类

  • 问题内容: 我有一个简单的表格。所有组件和状态都保存在Page组件中。有2个显示标题和3个输入字段。第一个输入应该是文本,第二个和第三个输入应该是整数。当用户输入错误的数据类型时,我想在输入字段旁边弹出一条错误消息。我的问题与React.JS的最佳做法有关 谁认为该值有效?我想输入字段的唯一工作就是将值引导回到保持状态的组件,这是否意味着只有Page可以确定值是否有效? 然后应该如何显示弹出窗口?