keras模型是否会影响输入数据的大小?

时间:2017-04-01 07:12:25

标签: python machine-learning neural-network deep-learning keras

我的意思是,如果在n模型中输入一个convnet模型,它会给出n个输出吗? 然而,当我尝试使用瓶颈模型(使用VGG16 convnet构建在其上)时,VGG16 convnet返回的输出少于输入数量的16个。

这是控制台输出:

  

import numpy as np

     

train_data = np.load(open('bottleneck_features_train.npy'))
  train_data.shape
  (8384,7,7,512)

     

validation_data = np.load(open('bottleneck_features_validation.npy'))   validation_data.shape
  (3584,7,7,512)

可以找到生成此输出的脚本here

上述脚本的堆栈跟踪。

  

使用Theano后端。
  从https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5下载数据   找到属于120个类别的8400张图片。节省火车功能......
  发现属于120个类别的3600张图片。保存测试功能...
  培训顶层...
  编制瓶颈模型...
  培训瓶颈模型......
  回溯(最近一次调用最后一次):

     
    

文件“pretrained_network.py”,第87行,中     train_top_model()

         

文件“pretrained_network.py”,第82行,在train_top_model中     validation_data =(validation_data,validation_labels))

         

文件“/home/ashish/ml-projects/venv/local/lib/python2.7/site-packages/keras/models.py",line 845,in fit initial_epoch = initial_epoch)

         

文件“/home/ashish/ml-projects/venv/local/lib/python2.7/site-packages/keras/engine/training.py”,     第1405行,合适     batch_size = batch_size)

         

文件“/home/ashish/ml-projects/venv/local/lib/python2.7/site-packages/keras/engine/training.py”,     第_ 1307行,_standardize_user_data         _check_array_lengths(x,y,sample_weights)

         

文件“/home/ashish/ml-projects/venv/local/lib/python2.7/site-packages/keras/engine/training.py”,     第229行,在_check_array_lengths中         '和'+ str(list(set_y)[0])+'目标样本。')

         

ValueError:输入数组应与目标数组具有相同数量的样本     找到8384个输入样本和8400个目标样本

  

1 个答案:

答案 0 :(得分:3)

问题在于,例如在你的脚本中:

bottleneck_features_train = model.predict_generator(
        generator, nb_train_samples // batch_size)

应该改为:

bottleneck_features_train = model.predict_generator(
        generator, (nb_train_samples // batch_size) + 1)

如果没有这个,generator的调用次数就不够了。