张量流多标签分类 - 不兼容的形状:[7,5] 与 [7]
tensorflow multilabel classification - Incompatible shapes: [7,5] vs. [7]
我正在尝试创建一个多标签分类器,但 运行 遇到了问题。我有 5 类 并且在尝试训练网络时卡住了,我对机器学习比较陌生,这是我构建的第一个多标签分类器。
我的代码:
```
def createModel(learn, act):
model = models.Sequential()
model.add(layers.Conv2D(32, (9,9), activation=act, input_shape=(512,512,1)))
model.add(layers.AveragePooling2D((2,2)))
model.add(layers.Conv2D(64, (9, 9), activation=act))
model.add(layers.AveragePooling2D((2,2)))
model.add(layers.Conv2D(64, (6, 6), activation=act))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(96, (6, 6), activation=act))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128, (3, 3), activation=act))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128, (3, 3), activation=act))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation=act))
model.add(layers.Dense(5, activation='sigmoid'))
model.compile(optimizer=optimizers.Adam(learning_rate=learn), loss='binary_crossentropy', metrics=['accuracy'])
return model
model = createModel(0.005, 'tanh')
History = model.fit(Xtrain, ytrain, epochs=300, validation_data=(Xtest, ytest), verbose=0)
```
由于我的数据集格式很奇怪,我使用了自己的拆分函数,因此我必须使用预先存在的数据创建自己的标签,然后 运行 通过热编码器。生成像 s0 这样的标签:
```array([[[1., 0.],
[1., 0.],
[1., 0.],
[0., 1.],
[1., 0.]]```
我正在使用 10 个图像数组作为测试,其中拆分 70% 训练 30% 测试但是当我开始训练网络时,出现以下错误:>
```Incompatible shapes: [7,5] vs. [7]
[[node Equal (defined at <ipython-input-54-eb6611e36e68>:3) ]] [Op:__inference_train_function_4978]```
这是什么意思,我该如何解决?
我删除了热编码器,它将标签恢复为之前的 [0.,0.,0.,1.,0.] 形式,这样我就可以训练网络了。
我正在尝试创建一个多标签分类器,但 运行 遇到了问题。我有 5 类 并且在尝试训练网络时卡住了,我对机器学习比较陌生,这是我构建的第一个多标签分类器。
我的代码:
```
def createModel(learn, act):
model = models.Sequential()
model.add(layers.Conv2D(32, (9,9), activation=act, input_shape=(512,512,1)))
model.add(layers.AveragePooling2D((2,2)))
model.add(layers.Conv2D(64, (9, 9), activation=act))
model.add(layers.AveragePooling2D((2,2)))
model.add(layers.Conv2D(64, (6, 6), activation=act))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(96, (6, 6), activation=act))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128, (3, 3), activation=act))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128, (3, 3), activation=act))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation=act))
model.add(layers.Dense(5, activation='sigmoid'))
model.compile(optimizer=optimizers.Adam(learning_rate=learn), loss='binary_crossentropy', metrics=['accuracy'])
return model
model = createModel(0.005, 'tanh')
History = model.fit(Xtrain, ytrain, epochs=300, validation_data=(Xtest, ytest), verbose=0)
```
由于我的数据集格式很奇怪,我使用了自己的拆分函数,因此我必须使用预先存在的数据创建自己的标签,然后 运行 通过热编码器。生成像 s0 这样的标签:
```array([[[1., 0.],
[1., 0.],
[1., 0.],
[0., 1.],
[1., 0.]]```
我正在使用 10 个图像数组作为测试,其中拆分 70% 训练 30% 测试但是当我开始训练网络时,出现以下错误:>
```Incompatible shapes: [7,5] vs. [7]
[[node Equal (defined at <ipython-input-54-eb6611e36e68>:3) ]] [Op:__inference_train_function_4978]```
这是什么意思,我该如何解决?
我删除了热编码器,它将标签恢复为之前的 [0.,0.,0.,1.,0.] 形式,这样我就可以训练网络了。