无法挤压 dim[1],预期维度为 1,得到 2 [[{{node predict/feature_vector/SpatialSqueeze}}]] [Op:__inference_train_function_253305]

xiaoxingxing tensorflow 192

原文标题Can not squeeze dim[1], expected a dimension of 1, got 2 [[{{node predict/feature_vector/SpatialSqueeze}}]] [Op:__inference_train_function_253305]

使用“Mobilenet_tranferLearning”时,我发现很难训练以下模型。我正在使用 ImageDataGenerator 和 flow_from_directory 方法从目录中扩充和加载文件。有趣的是,我的代码在使用 InceptionV3 时不会抛出任何错误,但在我使用“Mobilenet_tranferLearning”时会出现任何错误。我会感谢一些指针,因为我相信我正在使用正确的损失函数“categorical_crossentropy”,我也在 train_generator 中定义(class_mode=’分类’)。

train_datagen = ImageDataGenerator(
rescale= 1./255,
shear_range= 0.2,
zoom_range= 0.2,
horizontal_flip= True,
rotation_range= 20,
width_shift_range= 0.2,
height_shift_range= 0.2,   
validation_split=0.2,)


valid_datagen = ImageDataGenerator(
rescale= 1./255, 
validation_split=0.2,)

train_generator = train_datagen.flow_from_directory(  
'/content/fold/images/Images',  
target_size= (243, 243), 
color_mode= 'rgb',
batch_size= 64,  
class_mode= 'categorical',
subset='training',
shuffle= True, 
seed= 1337) 

valid_generator = valid_datagen.flow_from_directory(
'/content/fold/images/Images',
target_size= (243, 243),
color_mode= 'rgb',
batch_size= 64,  
class_mode= 'categorical',
subset='validation',
shuffle= True, 
seed= 1337)

`import tensorflow_hub as hub 
# from tensorflow.keras import Activations
classifier_url ="https://hub.tensorflow.google.cn/google/tf2- 
 preview/mobilenet_v2/feature_vector/4"
 baseModel = hub.KerasLayer(classifier_url, input_shape=(224,224,3), output_shape=[1280], 
 name="Mobilenet")
 baseModel.trainable = False # freeze mobilenet weights
 myModel = Sequential(name="Mobilenet_tranferLearning")
 myModel.add(baseModel)
 myModel.add(Flatten())
 myModel.add(Dropout(0.2))
 myModel.add(Dense(120,activation='softmax'))
 myModel.summary()`
 
 myModel.compile(optimizer= 'adam', loss= 'categorical_crossentropy', metrics= ['accuracy'])


  history = myModel.fit(train_generator,
                epochs=25,
                validation_data=valid_generator)`

我收到以下错误:

InvalidArgumentError:图形执行错误:

在定义于(最近一次调用最后)的节点“predict/feature_vector/SpatialSqueeze”处检测到:文件“/usr/lib/python3.7/runpy.py”,第 193 行,在 _run_module_as_main“main”,mod_spec)文件“/usr /lib/python3.7/runpy.py”,第 85 行,在 _run_codeexec(code, run_globals)文件“/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py”,第 16 行,在应用程序中。 launch_new_instance()文件“/usr/local/lib/python3.7/dist-packages/traitlets/config/application.py”,第846行,在launch_instanceapp.start()文件“/usr/local/lib/python3.7 /dist-packages/ipykernel/kernelapp.py”,第 499 行,在 startself.io_loop.start() 文件中“/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py”,行132,在startself.asyncio_loop.run_forever()文件“/usr/lib/python3.7/asyncio/base_events.py”,第541行,在run_foreverself._run_once()文件“/usr/lib/python3.7/asyncio/ base_events.py”,第 1786 行,在 _run_oncehandle._run() 文件中“/usr/lib/python3.7/asyncio/events.py”,第 88 行,在 _runself._context.run(self._callback, *self._args )文件“/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py”,第 122 行,在 _handle_eventshandler_func(fileobj, events) 文件中“/usr/local/lib/python3.7/dist- packages/tornado/stack_context.py”,第 300 行,在 null_wrapperreturn fn(*args, **kwargs)文件“/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py”,行452,在_handle_eventsself._handle_recv()文件“/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py”,第481行,在_handle_recvself._run_callback(callback, msg)文件“/usr /local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py”,第 431 行,在 _run_callbackcallback(*args, **kwargs)文件“/usr/local/lib/python3.7/dist- packages/tornado/stack_context.py”,第 300 行,在 null_wrapperreturn fn(*args, **kwargs)文件“/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py”,第 283 行,在 dispatcherreturn self.dispatch_shell(stream, msg)File “/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py”, line 233, in dispatch_shellhandler(stream, ide nts,msg)文件“/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py”,第 399 行,在 execute_requestuser_expressions,allow_stdin)文件“/usr/local/lib/python3.7/dist -packages/ipykernel/ipkernel.py”,第 208 行,在 do_executeres = shell.run_cell(代码,store_history=store_history,silent=silent)文件“/usr/local/lib/python3.7/dist-packages/ipykernel/zmqshell .py”,第 537 行,在 run_cellreturn super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)文件“/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py” ,第 2718 行,在 run_cellinteractivity=interactivity,compiler=compiler,result=result)文件“/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py”,第 2822 行,在 run_ast_nodesif self. run_code(代码,结果):文件“/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py”,第2882行,在run_codeexec(code_obj,self.user_global_ns,self.user_ns)文件中””,第 4 行,在 baseModel = hub.KerasLayer(classifier_url, input_shape=(224,224,3), outp ut_shape=[1280], name=”Mobilenet”) 文件 “/usr/local/lib/python3.7/dist-packages/tensorflow_hub/keras_layer.py”, 第 153 行, ininitself._func = load_module(handle, tags, self ._load_options)文件“/usr/local/lib/python3.7/dist-packages/tensorflow_hub/keras_layer.py”,第449行,在load_modulereturn module_v2.load(handle, tags=tags, options=set_load_options)文件“/usr /local/lib/python3.7/dist-packages/tensorflow_hub/module_v2.py”,第 106 行,在 loadobj = tf.compat.v1.saved_model.load_v2(module_path, tags=tags)Node: ‘predict/feature_vector/SpatialSqueeze ‘不能挤压dim[1],期望维度为1,得到2[[{{node predict/feature_vector/SpatialSqueeze}}]] [Op:__inference_train_function_253305]

原文链接:https://stackoverflow.com//questions/71505897/can-not-squeeze-dim1-expected-a-dimension-of-1-got-2-node-predict-featur

回复

我来回复
  • AloneTogether的头像
    AloneTogether 评论

    确保你有相同的图像大小(224, 224)inflow_from_directoryhub.KerasLayer。这是一个工作示例:

    import tensorflow_hub as hub
    import tensorflow as tf
    
    img_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255, rotation_range=20)
    
    flowers = tf.keras.utils.get_file(
        'flower_photos',
        'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
        untar=True)
    
    train_ds = img_gen.flow_from_directory(flowers, target_size=(224, 224), batch_size=32, shuffle=True)
    classifier_url ="https://hub.tensorflow.google.cn/google/tf2-preview/mobilenet_v2/feature_vector/4"
    baseModel = hub.KerasLayer(classifier_url, input_shape=(224,224,3), output_shape=[1280], 
    name="Mobilenet")
    baseModel.trainable = False # freeze mobilenet weights
    myModel = tf.keras.Sequential(name="Mobilenet_tranferLearning")
    myModel.add(baseModel)
    myModel.add(tf.keras.layers.Flatten())
    myModel.add(tf.keras.layers.Dropout(0.2))
    myModel.add(tf.keras.layers.Dense(5,activation='softmax'))
    myModel.summary()
    
    myModel.compile(optimizer= 'adam', loss= 'categorical_crossentropy', metrics= ['accuracy'])
    
    history = myModel.fit(train_ds, epochs=25)
    
    2年前 0条评论