首页 > 解决方案 > TypeError:('关键字参数不理解:','dim_ordering')

问题描述

我在尝试使此代码正常工作时遇到了一些问题,我遇到了不知道如何解决的错误。

我想尝试并练习代码必须开发算法以根据宫颈图像正确分类宫颈类型。

这是模型:

def create_model(opt_='adamax'):
    model = Sequential()
    model.add(Convolution2D(4, 3, 3, activation='relu', dim_ordering='th', input_shape=(3, 32, 32)))
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2), dim_ordering='th'))
    model.add(Convolution2D(8, 3, 3, activation='relu', dim_ordering='th'))
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2), dim_ordering='th'))
    model.add(Dropout(0.2))
    model.add(Flatten())
    model.add(Dense(12, activation='tanh'))
    model.add(Dropout(0.1))
    model.add(Dense(3, activation='softmax'))
    model.compile(optimizer=opt_, loss='sparse_categorical_crossentropy', metrics=['accuracy']) 
    return model

def cleanImages():
    datagen = ImageDataGenerator(rotation_range=0.3, zoom_range=0.3)
    datagen.fit(train_data)
    return datagen

def fitAndPredict():
    print("cleaning images")
    datagen=cleanImages()
    print("images cleaned")

    model = create_model()
    x_train,x_val_train,y_train,y_val_train = train_test_split(train_data,train_target,test_size=0.4, random_state=17)
    print("fitting data")
    model.fit_generator(datagen.flow(x_train,y_train, batch_size=15, shuffle=True), nb_epoch=200, 
    samples_per_epoch=len(x_train), verbose=1, validation_data=(x_val_train, y_val_train))
    print("data fitted in model")
    test_data = np.load('test1.npy')
    test_id = np.load('test_id1.npy')
    print("creating predictions")
    predictions = model.predict_proba(test_data)
    print("predictions made")
    return predictions, test_id

def createSub():
    pred, test_id=fitAndPredict()
    print("creating submission file")
    df = pd.DataFrame(pred, columns=['Type_1','Type_2','Type_3'])
    df['image_name'] = test_id
     #df.to_csv('submission.csv', index=False)
    df.to_csv(r'D:/Test cods/Sample code1jupyter/csvfile/submission.csv', index=False)
    print("submission created")

if __name__ == '__main__':

    createSub()

我找不到问题所在

-------------------------------------------------------------------
cleaning images
images cleaned
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-67-83b0d2376a28> in <module>
      1 if __name__ == '__main__':
      2 
----> 3     createSub()
      4 

<ipython-input-66-d63e92615546> in createSub()
      1 def createSub():
----> 2     pred, test_id=fitAndPredict()
      3     print("creating submission file")
      4     df = pd.DataFrame(pred, columns=['Type_1','Type_2','Type_3'])
      5     df['image_name'] = test_id

<ipython-input-65-24f2c91bcb25> in fitAndPredict()
      9     print("images cleaned")
     10 
---> 11     model = create_model()
     12     x_train,x_val_train,y_train,y_val_train = 
train_test_split(train_data,train_target,test_size=0.4, random_state=17)
     13     print("fitting data")

<ipython-input-63-43a9c4acdc14> in create_model(opt_)
      1 def create_model(opt_='adamax'):
      2     model = Sequential()
----> 3     model.add(Convolution2D(4, 3, 3, activation='relu', dim_ordering='th', 
input_shape=(3, 32, 32))) #use input_shape=(3, 64, 64)
      4     model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2), dim_ordering='th'))
      5     model.add(Convolution2D(8, 3, 3, activation='relu', dim_ordering='th'))

~\AppData\Roaming\Python\Python38\site-packages\keras\layers\convolutional.py in 
__init__(self, filters, kernel_size, strides, padding, data_format, dilation_rate, groups, 
activation, use_bias, kernel_initializer, bias_initializer, kernel_regularizer, 
bias_regularizer, activity_regularizer, kernel_constraint, bias_constraint, **kwargs)
    654                bias_constraint=None,
    655                **kwargs):
--> 656     super(Conv2D, self).__init__(
    657         rank=2,
    658         filters=filters,

~\AppData\Roaming\Python\Python38\site-packages\keras\layers\convolutional.py in 
__init__(self, rank, filters, kernel_size, strides, padding, data_format, dilation_rate, 
groups, activation, use_bias, kernel_initializer, bias_initializer, kernel_regularizer, 
bias_regularizer, activity_regularizer, kernel_constraint, bias_constraint, trainable, name, 
conv_op, **kwargs)
    123                conv_op=None,
    124                **kwargs):
--> 125     super(Conv, self).__init__(
    126         trainable=trainable,
    127         name=name,

~\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\training\tracking\base.py in 
_method_wrapper(self, *args, **kwargs)
    520     self._self_setattr_tracking = False  # pylint: disable=protected-access
    521     try:
--> 522       result = method(self, *args, **kwargs)
    523     finally:
    524       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access

~\AppData\Roaming\Python\Python38\site-packages\keras\engine\base_layer.py in __init__(self, 
  trainable, name, dtype, dynamic, **kwargs)
    321     }
    322     # Validate optional keyword arguments.
--> 323     generic_utils.validate_kwargs(kwargs, allowed_kwargs)
    324 
    325     # Mutable properties

~\AppData\Roaming\Python\Python38\site-packages\keras\utils\generic_utils.py in 
validate_kwargs(kwargs, allowed_kwargs, error_message)
   1132   for kwarg in kwargs:
   1133     if kwarg not in allowed_kwargs:
-> 1134       raise TypeError(error_message, kwarg)
   1135 
   1136 

TypeError: ('Keyword argument not understood:', 'dim_ordering')

标签: pythonmachine-learningkerastf.keraskeras-layer

解决方案


推荐阅读