Python 使用Keras构建线性分类器
我需要在一组10个类别上创建一个模型。它应该是具有softmax激活功能的单层线性分类器。我已经从各种教程中编写了一些代码,但它似乎没有给出我需要的结果 这是我写的函数: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 它通过以下方式调用:
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)
?我看它们是!现在开始工作了!非常感谢。