Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras VGG16 ValueError:“;生成器的输出应该是tuple,但得到';无&引用;我怎样才能解决这个问题?_Python_Deep Learning_Keras - Fatal编程技术网

Python Keras VGG16 ValueError:“;生成器的输出应该是tuple,但得到';无&引用;我怎样才能解决这个问题?

Python Keras VGG16 ValueError:“;生成器的输出应该是tuple,但得到';无&引用;我怎样才能解决这个问题?,python,deep-learning,keras,Python,Deep Learning,Keras,我正在用我自己的数据集微调VGG16预训练模型,该数据集有两个类别。当我尝试运行model.fit\u generator()时,出现以下错误: 生成器的输出应该是元组(x,y,sample_weight)或(x,y)。找到:无。 但是flow\u from\u directory查找我可以从终端看到的图像 我怎样才能解决这个问题?请帮忙 from keras.datasets import cifar10 from keras.utils import * from keras.optimiz

我正在用我自己的数据集微调VGG16预训练模型,该数据集有两个类别。当我尝试运行
model.fit\u generator()
时,出现以下错误:

生成器的输出应该是元组(x,y,sample_weight)或(x,y)。找到:无。

但是
flow\u from\u directory
查找我可以从终端看到的图像

我怎样才能解决这个问题?请帮忙

from keras.datasets import cifar10
from keras.utils import *
from keras.optimizers import SGD
from keras.layers import Input,Dense
from keras.preprocessing.image import ImageDataGenerator
import cv2

train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
    'dataset/train',
    target_size=(64, 64),
    batch_size=32,
    class_mode='binary')

validation_generator = test_datagen.flow_from_directory(
    'dataset/evaluate',
    target_size=(64, 64),
    batch_size=32,
    class_mode='binary')


from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
from keras.models import Model
import numpy as np


input_shape=(64, 64, 3)

inputs = Input(shape=(64,64,3))

base_model = VGG16(weights=None, include_top=False, input_shape=input_shape)
x = base_model.output
x = Flatten(input_shape=model.output_shape[1:])(x)
x = Dense(256, activation='relu')
x = Dropout(0.5)(x)
x = Dense(1, activation='sigmoid')(x)
x = Dense(1, activation='sigmoid', name='predictions')(x)
model = Model(base_model.input , x)
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=   ['accuracy']) 


#train_generator = np.asarray(train_generator)
#validation_generator = np.asarray(validation_generator)
validation_generator = np.expand_dims(validation_generator, axis=2)
validation_generator = np.expand_dims(validation_generator, axis=3)

model.fit_generator(
        train_generator,
        steps_per_epoch=2000,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800)

对于两个类来说,您的顶层似乎是错误的。换成

x = Dense(1, activation='sigmoid', name='predictions')(x)
model = Model(base_model.input , x)
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=   ['accuracy'])   
我还建议您在“headless”VGG16基础上添加一个完整的分类器模型,如您在Keras示例代码中看到的:

top_model = Sequential()
top_model.add(Flatten(input_shape=model.output_shape[1:]))
top_model.add(Dense(256, activation='relu'))
top_model.add(Dropout(0.5))
top_model.add(Dense(1, activation='sigmoid'))

您还应该从此行中删除
classes
参数:

base_model = VGG16(weights=None, include_top=False, input_shape=input_shape, classes=2)

请参见此处VGG16应用程序的Keras文档:

欢迎使用SO。请提供您的完整代码,以便其他人可以看到您所做的事情并可以帮助您。另外,请尽量设置问题的格式,尤其是代码块。感谢您提供完整的代码。为了使它更清晰,请删除任何不必要的代码行,特别是注释掉的代码。谢谢帮助!现在我有一个错误:“ValueError:validation_数据应该是一个元组
(val_x,val_y,val_sample_weight)
(val_x,val_y)
。找到:[[]]确定。将
(x)
添加到此行:
x=densite(256,activation='relu')
。其中一行是冗余的:
x=densite(1,activation='sigmoid')(x)
添加层解决了问题。我猜我在代码中打错了一行。谢谢你的帮助!成功了!但我还不到15岁(代表:)