【问题标题】:How to write a classification algorithm in tensorflow using keras in python?python - 如何使用python中的keras在tensorflow中编写分类算法?
【发布时间】:2019-10-13 00:16:39
【问题描述】:

我有一个包含 2 张图像的训练集,其中包含 64 个特征和一个附加标签,即匹配/不匹配。

如何使用 keras 在神经网络中输入这些数据?

我的数据如下:

[
    [
        [
            239, 
            1, 
            255, 
            255, 
            255, 
            255, 
            2, 
            0, 
            130, 
            3, 
            1, 
            101, 
            22, 
            154, 
            0, 
            240, 
            30, 
            0, 
            2, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            128, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            71, 
            150, 
            212
        ], 
        [
            239, 
            1, 
            255, 
            255, 
            255, 
            255, 
            2, 
            0, 
            130, 
            3, 
            1, 
            101, 
            22, 
            154, 
            0, 
            240, 
            30, 
            0, 
            2, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            128, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            71, 
            150, 
            212
        ], 
        "true"
    ], 
    [
        [
            239, 
            1, 
            255, 
            255, 
            255, 
            255, 
            2, 
            0, 
            130, 
            3, 
            1, 
            81, 
            28, 
            138, 
            0, 
            241, 
            254, 
            128, 
            6, 
            0, 
            2, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            128, 
            0, 
            128, 
            2, 
            128, 
            2, 
            192, 
            6, 
            224, 
            6, 
            224, 
            62, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            13, 
            62
        ], 
        [
            239, 
            1, 
            255, 
            255, 
            255, 
            255, 
            2, 
            0, 
            130, 
            3, 
            1, 
            81, 
            28, 
            138, 
            0, 
            241, 
            254, 
            128, 
            6, 
            0, 
            2, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            128, 
            0, 
            128, 
            2, 
            128, 
            2, 
            192, 
            6, 
            224, 
            6, 
            224, 
            62, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            0, 
            13, 
            62
        ], 
        "true"
    ], 
    ....
]

我想训练神经网络,以便在训练后如果我提供 2 个 64 个特征的数组,那么它应该能够判断它们是否匹配?

【问题讨论】:

  • 您应该查看有关创建具有 2 个输出的分类器的教程。网上有很多。
  • 检查过,但他们没有解决我的问题。你能为此推荐任何具体的教程吗?
  • 基本上你没有提供任何需要解决的具体问题。这类问题一般不受欢迎。你应该提供一个minimal, verifiable example

标签: python tensorflow keras classification


【解决方案1】:

由于您已经提取了期货,我建议只使用一些密集层并将“真”和“假”分别转换为 1 和 0,然后在最后的密集层上使用 sigmoid .

先尝试一些简单的东西,看看效果如何,然后继续,需要更多帮助,请问

编辑

def generator(batch_size=10, nr_features=126):
    feed_data = np.zeros((batch_size, nr_features))
    labels = np.zeros(batch_size)
    i = 0
    for entry in data:
        if entry.pop(-1) == "true":
            labels[i] = 1
        else:
            labels[i] = 0
        feed_data[i, :] = np.array(entry).flatten()
        i += 1
        if not (i % batch_size):
            i = 0
            yield feed_data, labels


model = keras.Sequential()
model.add(keras.layers.Dense(126, input_dim=126))
model.add(keras.layers.Dense(20))
model.add(keras.layers.Dense(1))
model.add(keras.layers.Activation('sigmoid'))
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])
for d, l in generator():
    model.train_on_batch(d, l)

那么会发生什么,

生成器中的数据是你的完整数据,我弹出真/假,将其转换为1/0并将其放入标签数组中,我将所有特征连接为126的特征向量。所以feed_data.shape = (10, 126) 和 labels.shape = (10)。

我将它提供给一个简单的全连接网络,最终得到一个 sigmoid。 Sigmoid 对概率很有用,所以在这种情况下,输出将是特征向量为真的概率。我只是提供数据。

简单的例子,不是完整的代码,但应该让你开始,我测试了它,它为我运行,但我还没有训练任何东西,这是给你的,祝你好运!

哦,还有问题,问吧

【讨论】:

  • 是的,我想问一件事,我有 2 张图片要匹配,每张都有 64 个特征。那么,我的输入层会有 64+64=128 个节点吗?
  • 并非如此,输入将有 64 个节点,您将提供一批 2 个,但是等等,您只有 2 个图像?然后不要使用深度学习,只使用openCV,你不能只用2张图像训练任何东西,或者我很困惑xd
  • 我有这种格式的数据,[ [ [ image 1 ], [ image 2 ], "true" ], [ [ image 1 ], [ image 2 ], "true" ], [ [图片 1 ]、[ 图片 2 ]、“真实”]、[[ 图片 1 ]、[图片 2]、“真实”]、....]
  • 诚实地拆分数据是有意义的
  • 我目前有 50 个训练样例,我计划在其上运行多次迭代
猜你喜欢
  • 2016-12-27
  • 2018-07-11
  • 2018-09-26
  • 2023-03-15
  • 2021-03-08
  • 2018-03-31
  • 2019-06-09
  • 2020-06-04
  • 2021-06-05
相关资源
最近更新 更多