Keras CNN TypeError:float()参数必须是字符串或数字,而不是'NoneType'

我尝试使用ImageDataGeneratorflow()用Keras设置二进制cnn。我看过其他具有类似问题的线程,但仍然无法使模型运行。 我的图片存储在正确的树形结构中,我认为它们均未损坏或损坏 我正在使用Keras 2.2.5和TensorFlow 1.15.0。

当我尝试训练模型时,出现以下错误:

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1033: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1020: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3005: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.

Epoch 1/10
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:197: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:207: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:216: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:223: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-37-62d341ff3a92> in <module>()
----> 1 get_ipython().run_cell_magic('time','','\nhistory = model.fit_generator(\n    train_generator,\n    steps_per_epoch=len(X_train) / BATCH_SIZE,\n    epochs=EPOCHS,\n    validation_data=val_generator,\n    validation_steps=len(X_val) / BATCH_SIZE\n)')

9 frames
/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py in run_cell_magic(self,magic_name,line,cell)
   2115             magic_arg_s = self.var_expand(line,stack_depth)
   2116             with self.builtin_trap:
-> 2117                 result = fn(magic_arg_s,cell)
   2118             return result
   2119 

</usr/local/lib/python3.6/dist-packages/decorator.py:decorator-gen-60> in time(self,cell,local_ns)

/usr/local/lib/python3.6/dist-packages/IPython/core/magic.py in <lambda>(f,*a,**k)
    186     # but it's overkill for just that one bit of state.
    187     def magic_deco(arg):
--> 188         call = lambda f,**k: f(*a,**k)
    189 
    190         if callable(arg):

/usr/local/lib/python3.6/dist-packages/IPython/core/magics/execution.py in time(self,local_ns)
   1191         else:
   1192             st = clock2()
-> 1193             exec(code,glob,local_ns)
   1194             end = clock2()
   1195             out = None

<timed exec> in <module>()

/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py in wrapper(*args,**kwargs)
     89                 warnings.warn('Update your `' + object_name + '` call to the ' +
     90                               'Keras 2 API: ' + signature,stacklevel=2)
---> 91             return func(*args,**kwargs)
     92         wrapper._original_function = func
     93         return wrapper

/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in fit_generator(self,generator,steps_per_epoch,epochs,verbose,callbacks,validation_data,validation_steps,validation_freq,class_weight,max_queue_size,workers,use_multiprocessing,shuffle,initial_epoch)
   1656             use_multiprocessing=use_multiprocessing,1657             shuffle=shuffle,-> 1658             initial_epoch=initial_epoch)
   1659 
   1660     @interfaces.legacy_generator_methods_support

/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py in fit_generator(model,initial_epoch)
    213                 outs = model.train_on_batch(x,y,214                                             sample_weight=sample_weight,--> 215                                             class_weight=class_weight)
    216 
    217                 outs = to_list(outs)

/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in train_on_batch(self,x,sample_weight,class_weight)
   1447             ins = x + y + sample_weights
   1448         self._make_train_function()
-> 1449         outputs = self.train_function(ins)
   1450         return unpack_singleton(outputs)
   1451 

/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py in __call__(self,inputs)
   2977                     return self._legacy_call(inputs)
   2978 
-> 2979             return self._call(inputs)
   2980         else:
   2981             if py_any(is_tensor(x) for x in inputs):

/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py in _call(self,inputs)
   2915                 array_vals.append(
   2916                     np.asarray(value,-> 2917                                dtype=tf.as_dtype(tensor.dtype).as_numpy_dtype))
   2918         if self.feed_dict:
   2919             for key in sorted(self.feed_dict.keys()):

/usr/local/lib/python3.6/dist-packages/numpy/core/_asarray.py in asarray(a,dtype,order)
     83 
     84     """
---> 85     return array(a,copy=False,order=order)
     86 
     87 

TypeError: float() argument must be a string or a number,not 'NoneType'

这是我的Keras代码:

#Establish model parameters
model = models.Sequential()

model.add(layers.Conv2D(32,(3,3),input_shape=(IMG_SIZE,IMG_SIZE,3)))
model.add(layers.activation('relu'))
model.add(layers.MaxPooling2D(pool_size=(2,2)))

model.add(layers.Conv2D(32,2)))

model.add(layers.Conv2D(64,2)))

model.add(layers.Reshape((-1,))) #replaced flatten()
model.add(layers.Dense(64))
model.add(layers.activation('relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1))
model.add(layers.activation('sigmoid'))

#Compile model
model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])

model.summary()


#Image generator
data_aug = ImageDataGenerator(
    rescale=1. / 255,shear_range=0.2,featurewise_center=False,# set input mean to 0 over the dataset
    samplewise_center=False,# set each sample mean to 0
    featurewise_std_normalization=False,# divide inputs by std of the dataset
    samplewise_std_normalization=False,# divide each input by its std
    zca_whitening=False,# apply ZCA whitening
    rotation_range=15,# randomly rotate images in the range (degrees,0 to 180)
    zoom_range =0.15,# Randomly zoom image 
    width_shift_range=0.1,# randomly shift images horizontally (fraction of total width)
    height_shift_range=0.1,# randomly shift images vertically (fraction of total height)
    horizontal_flip=True,# randomly flip images
    vertical_flip=False) # randomly flip images

#Prepare image generator for training dataset
train_generator = data_aug.flow(np.array(X_train),y_train,batch_size=BATCH_SIZE)

#Prepare validation generator
val_datagen = ImageDataGenerator(
    rescale=1. / 255)

val_generator = val_datagen.flow(np.array(X_val),y_val,batch_size=BATCH_SIZE)

#Fit model 1
%%time

history = model.fit_generator(
    train_generator,steps_per_epoch=len(X_train) / BATCH_SIZE,epochs=EPOCHS,validation_data=val_generator,validation_steps=len(X_val) / BATCH_SIZE
)

有人看到Keras代码有什么问题吗?还是图像预处理步骤有问题?

xhf5211314 回答:Keras CNN TypeError:float()参数必须是字符串或数字,而不是'NoneType'

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3107935.html

大家都在问