Python 使用Keras构建线性分类器

Python 使用Keras构建线性分类器,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我需要在一组10个类别上创建一个模型。它应该是具有softmax激活功能的单层线性分类器。我已经从各种教程中编写了一些代码,但它似乎没有给出我需要的结果 这是我写的函数: def build_classifier(): model = models.Sequential([ layers.Input(shape=(2,)), layers.Dense(1, activation='softmax'), ]) return model 它通过以下方式调用:

我需要在一组10个类别上创建一个模型。它应该是具有softmax激活功能的单层线性分类器。我已经从各种教程中编写了一些代码,但它似乎没有给出我需要的结果

这是我写的函数:

def build_classifier():
    model = models.Sequential([
    layers.Input(shape=(2,)),
    layers.Dense(1, activation='softmax'),
    ])
    return model
它通过以下方式调用:

newModel = build_classifier()
newModel.summary()
数据和标签定义为:

labels = ['a','b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

data = keras.datasets.cifar10.load_data()
我不断得到以下结果:

Model: "sequential_3"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_4 (Dense)              (None, 1)                 3         
=================================================================
Total params: 3
Trainable params: 3
Non-trainable params: 0
但我需要得到:

Model: "linear_classifier"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten (Flatten)            (None, 3072)              0         
_________________________________________________________________
dense (Dense)                (None, 10)                30730     
=================================================================
Total params: 30,730
Trainable params: 30,730
Non-trainable params: 0

我特别不确定如何从顺序分类器到线性分类器,因为我似乎只能找到这个
模型。顺序分类器
而不是线性分类器的版本。

你在找这样的东西吗

import tensorflow as tf

def build_classifier():
    model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(32,32,3)),
    tf.keras.layers.Flatten(name='flatten'),
    tf.keras.layers.Dense(10, activation='linear', name='dense'),
    ], name='linear_classifier')
    return model

model = build_classifier()
model.summary()

Model: "linear_classifier"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten (Flatten)            (None, 3072)              0         
_________________________________________________________________
dense (Dense)                (None, 10)                30730     
=================================================================
Total params: 30,730
Trainable params: 30,730
Non-trainable params: 0
_________________________________________________________________

这似乎对信息有用,但似乎并没有改变模型的分类。摘要中的第一行是
模型:“sequential_3”
(我的原件),
模型:“sequential_2”
(当softmax更改为线性时您的版本),但我需要它是
模型:“linear_classifier”
。你知道怎么把它改成那样吗?看更新,这个怎么样?我收到了
模型:“sequential_3”
,这个代码只是一个名字。你能确定你想要的最后一层是什么吗?它是
densed_4(densed)(无,1)
还是
densed_4(densed)(无,10)
?我看它们是!现在开始工作了!非常感谢。