首页 > 解决方案 > 如何生成自定义张量流训练/验证数据,

问题描述

我正在尝试根据特定字符的出现次数对一堆序列进行分类。我想要一个具有一维输入的网络,因此输入(可变长度)可以一次输入一个字符。然后我想要一个浮动分类,在处理每个字符后更新。

我是 tensforflow 新手,使用以下教程:https ://www.tensorflow.org/tutorials/text/text_classification_rnn

当我尝试使用完全不同的数据集时,其中很多似乎无关紧要。

我已经生成了我的(训练/验证 70-30%)数据并将它们保存在以下形式的字典中:{sequence_string: classification}.

我已经开始研究以下用于构建模型的代码:

model = tf.keras.Sequential([
    tf.keras.layers.Embedding(2 ** SEQUENCE_MAX_LENGTH, 64),
    tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64, return_sequences=True)),
    tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dropout(0.5),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(loss='binary_crossentropy',
              optimizer=tf.keras.optimizers.Adam(1e-4),
              metrics=['accuracy'])

history = model.fit(
    TRAINING_DATA, << Doesnt work because my training data format is completely off 
    epochs=10,
    validation_data=TEST_DATA,
    validation_steps=30
)

这是要使用的正确 API 吗?如何将我当前的数据转换为可用的训练集?

标签: pythontensorflow

解决方案


你能分享你的数据样本和目标输出吗?(抱歉还不能评论帖子)

您建议一次输入一个字符,并有一个不断更新的预测。
这样做有一个问题,因为循环神经网络具有一组固定的权重,因此具有固定的输入大小。

您可以通过向网络提供字符子串来模仿“一次一个字符”的预测(可能用于绘图目的)。这确实意味着用于预测的输入字符的数量是有限的。

前任。
第一个预测:[0, 0, 0] -> A 类

第二个预测:['T', 0, 0] -> B 类

第三个预测:['G', 'T', 0] -> B 类

第 4 个预测:['A', 'G', 'T'] -> C 类


推荐阅读