python产生1600长度的数据_值错误:输入数组的采样数应与目标数组的采样数相同。找到1600个输入样本和6400个目标样本...

我在试着做一个8级分类。代码如下:import keras

import numpy as np

from keras.preprocessing.image import ImageDataGenerator

from keras.models import Sequential

from keras.layers import Dropout, Flatten, Dense

from keras import applications

from keras.optimizers import SGD

from keras import backend as K

K.set_image_dim_ordering('tf')

img_width, img_height = 48,48

top_model_weights_path = 'modelom.h5'

train_data_dir = 'chCdata1/train'

validation_data_dir = 'chCdata1/validation'

nb_train_samples = 6400

nb_validation_samples = 1600

epochs = 50

batch_size = 10

def save_bottlebeck_features():

datagen = ImageDataGenerator(rescale=1. / 255)

model = applications.VGG16(include_top=False, weights='imagenet', input_shape=(48,48,3))

generator = datagen.flow_from_directory(

train_data_dir,

target_size=(img_width, img_height),

batch_size=batch_size,

class_mode='categorical',

shuffle=False)

bottleneck_features_train = model.predict_generator(

generator, nb_train_samples // batch_size)

np.save(open('bottleneck_features_train', 'wb'),bottleneck_features_train)

generator = datagen.flow_from_directory(

validation_data_dir,

target_size=(img_width, img_height),

batch_size=batch_size,

class_mode='categorical',

shuffle=False)

bottleneck_features_validation = model.predict_generator(

generator, nb_validation_samples // batch_size)

np.save(open('bottleneck_features_validation', 'wb'),bottleneck_features_validation)

def train_top_model():

train_data = np.load(open('bottleneck_features_train', 'rb'))

train_labels = np.array([0] * (nb_train_samples // 8) + [1] * (nb_train_samples // 8) + [2] * (nb_train_samples // 8) + [3] * (nb_train_samples // 8) + [4] * (nb_train_samples // 8) + [5] * (nb_train_samples // 8) + [6] * (nb_train_samples // 8) + [7] * (nb_train_samples // 8))

validation_data = np.load(open('bottleneck_features_validation', 'rb'))

validation_labels = np.array([0] * (nb_train_samples // 8) + [1] * (nb_train_samples // 8) + [2] * (nb_train_samples // 8) + [3] * (nb_train_samples // 8) + [4] * (nb_train_samples // 8) + [5] * (nb_train_samples // 8) + [6] * (nb_train_samples // 8) + [7] * (nb_train_samples // 8))

train_labels = keras.utils.to_categorical(train_labels, num_classes = 8)

validation_labels = keras.utils.to_categorical(validation_labels, num_classes = 8)

model = Sequential()

model.add(Flatten(input_shape=train_data.shape[1:]))

model.add(Dense(512, activation='relu'))

model.add(Dropout(0.5))

model.add(Dense(8, activation='softmax'))

sgd = SGD(lr=1e-2, decay=0.00371, momentum=0.9, nesterov=False)

model.compile(optimizer=sgd,

loss='categorical_crossentropy', metrics=['accuracy'])

model.fit(train_data, train_labels,

epochs=epochs,

batch_size=batch_size,

validation_data=(validation_data, validation_labels))

model.save_weights(top_model_weights_path)

save_bottlebeck_features()

train_top_model()

我在这里添加了完整的错误列表:Traceback (most recent call last):

File "", line 1, in

runfile('C:/Users/rajaramans2/codes/untitled15.py', wdir='C:/Users/rajaramans2/codes')

File "C:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile

execfile(filename, namespace)

File "C:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile

exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/rajaramans2/codes/untitled15.py", line 71, in

train_top_model()

File "C:/Users/rajaramans2/codes/untitled15.py", line 67, in train_top_model

validation_data=(validation_data, validation_labels))

File "C:\Anaconda3\lib\site-packages\keras\models.py", line 856, in fit

initial_epoch=initial_epoch)

File "C:\Anaconda3\lib\site-packages\keras\engine\training.py", line 1449, in fit

batch_size=batch_size)

File "C:\Anaconda3\lib\site-packages\keras\engine\training.py", line 1317, in _standardize_user_data

_check_array_lengths(x, y, sample_weights)

File "C:\Anaconda3\lib\site-packages\keras\engine\training.py", line 235, in _check_array_lengths

'and ' + str(list(set_y)[0]) + ' target samples.')

ValueError: Input arrays should have the same number of samples as target arrays. Found 1600 input samples and 6400 target samples.

“ValueError:输入数组的采样数应与目标数组的采样数相同。找到1600个输入样本和6400个目标样本。请帮助解决方案和必要的修改代码。提前谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值