在具有图像数据集的CNN模型上工作,每个图像读取一个6位数字,其对应的标签是图像中数字的字符串值(例如“ 658945”)。因此,数据集中的每个标签都与另一个标签不同,并且数据集中的每个图像都有一个标签。我知道以标签形式(作为字符串)传递标签时,出现此错误:'str' object has no attribute 'ndim'
。那么实现标签的正确方法是什么?输出层的神经元应该和数据集中的标签一样多吗?
更新:这是代码:
x_train, y_train = create_training_data()
print(x_train)
print(y_train)
model = Sequential()
model.add(Conv2D(64, (3, 3), input_shape = x_train.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=8, epochs=25, validation_split=0.1, verbose=1)
x_train:
[[[[1. ]
[1. ]
[1. ]
...
[0.99215686]
[0.99215686]
[1. ]]]]
y_train:
[['321043'], ['734231'], ['754946'], ['135039'], ['529285'], ['458224'], ['403070']...['533067'], ['185215'], ['495197'], ['100333']]
通过[["123456"],["654312"]]
而不是["123456","654312"]
作为您的“标签列表”。