【问题标题】:What's the best way to process strings for inputs in Keras? [closed]在 Keras 中处理输入字符串的最佳方法是什么? [关闭]
【发布时间】:2023-03-22 15:00:01
【问题描述】:

我有一个数据集,其中名称是一个重要特征。我想使用它在 python 的 keras 神经网络中有一个输入节点。但既然这是不可能的,那么最好的方法是什么??

我尝试了一种热编码,但由于名称的长度不固定,它没有用吗?

【问题讨论】:

    标签: python python-3.x tensorflow machine-learning keras


    【解决方案1】:

    您可以使用Embeddings,它将大型稀疏向量(one-hot 编码)转换为保留语义关系的低维空间。所以对于分类特征,你将有密集的向量表示。

    unique_amount = np.unique(col1)
    input_1 = tf.keras.layers.Input(shape=(1,), name='input_1')
    embedding_1 = tf.keras.layers.Embedding(unique_amount_1, 50, trainable=True)(input_1)
    col1_embedding = tf.keras.layers.Flatten()(embedding_1)
    

    其中50 - 嵌入向量的大小,您可以自行选择。

    【讨论】:

      【解决方案2】:

      您可以在keras 中尝试如下character 一级热编码。确保在Tokenizer 中设置char_level=True 标志。这可能会导致我们非常低维的稀疏矩阵。

      from keras.preprocessing.text import Tokenizer
      tokenizer = Tokenizer(char_level=True)
      tokenizer.fit_on_texts(<names>)
      sequence_of_int = tokenizer.texts_to_sequences(<dataset_names>)
      

      甚至,您也可以尝试自己表示基于频率的字符编码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-02
        • 2012-05-31
        • 2015-01-19
        • 2020-07-11
        • 2013-07-02
        • 2014-03-12
        相关资源
        最近更新 更多