【发布时间】:2020-07-01 20:00:04
【问题描述】:
我正在尝试训练一个深度神经网络,使其能够根据字符串的值对其进行分类。所以,这意味着我的数据都是文本。但是,它不是句子意义上的文本,这是我在互联网上看到的大多数文本分类线程都在谈论的内容。为了使算法正常工作,我对输入进行了一次热编码(尽管这些不是分类值,所以我不确定是否有更正确的编码方法)并训练了模型。但是,问题在于,当我尝试运行算法在测试或训练数据集中没有看到的新文本字符串时,算法期望输入是 one-hot 编码训练数据集的形状。我们应该如何训练一个模型,然后更改输入,以便它接受一个不一定与模型适合的形状相同的实际字符串?
以下是训练数据的示例:
SB-01_0-1_20200701 1
11-22-4334 0
MW-01_20200621 1
Benzene 0
为了说明问题,这里是模型本身的代码:
DNNmodel = keras.Sequential([
keras.layers.Dense(1), #input layer size
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(1) #output layer size
])
DNNmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
DNNmodel.fit(x_train, y_train, epochs=3, batch_size=32)
当我尝试运行时:
DNNmodel.predict(np.array(["RI-SB-01_0-5_20200102"]))
为了尝试对单个字符串值进行分类,我得到值错误“ValueError:图层顺序_21 的输入 0 与图层不兼容:输入形状的预期轴 -1 具有值 10509,但接收到形状为 [无, 1]"
关于如何做到这一点的任何提示?
【问题讨论】:
-
对否决票有点困惑......对不起,我对数据科学还是很陌生。
标签: python tensorflow machine-learning