使用Prelu激活函数训练CNN

我在尝试使用prelu激活函数训练模型时,遇到了以下错误

---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/array_ops.py in zeros(shape, dtype, name)   2965         shape = constant_op._tensor_shape_tensor_conversion_function(-> 2966             tensor_shape.TensorShape(shape))   2967       except (TypeError, ValueError):31 framesValueError: Cannot convert a partially known TensorShape to a Tensor: (None, None, 64)During handling of the above exception, another exception occurred:ValueError                                Traceback (most recent call last)/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/constant_op.py in convert_to_eager_tensor(value, ctx, dtype)     96       dtype = dtypes.as_dtype(dtype).as_datatype_enum     97   ctx.ensure_initialized()---> 98   return ops.EagerTensor(value, ctx.device_name, dtype)     99     100 ValueError: Attempt to convert a value (None) with an unsupported type (<class 'NoneType'>) to a Tensor.

我使用了下面的代码,请告诉我如何修正它。

from tensorflow.keras.applications import MobileNetfrom tensorflow.keras.layers import (Conv2D, MaxPooling2D,                                      GlobalAveragePooling2D, Dropout, Dense)from tensorflow.keras import Modelfrom tensorflow import kerasCLASSES = 2#model.compile()# setup modelbase_model = MobileNet(weights='imagenet', include_top=False)input = (224, 224, 3)x = base_model.outputx = Conv2D(64, (3,3), padding='same', activation = keras.layers.PReLU(alpha_initializer='zeros', alpha_regularizer=None, alpha_constraint=None, shared_axes=None), strides= (2,2), name='layer1')(x)x = MaxPooling2D(pool_size=(2,2))(x)x = Conv2D(128, (3,3), padding='same', activation = keras.layers.PReLU(alpha_initializer='zeros', alpha_regularizer=None, alpha_constraint=None, shared_axes=None), name='layer2')(x)x = GlobalAveragePooling2D(name='avg_pool')(x)x = Dropout(0.4)(x)predictions = Dense(CLASSES, activation=tf.keras.activations.sigmoid)(x)model = Model(inputs=base_model.input, outputs=predictions) # transfer learningfor layer in base_model.layers: layer.trainable = False model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])

回答:

你的张量输入有误。你需要像这样设置它

input_s = layers.Input((224, 224, 3))base_model = keras.applications.MobileNet(weights='imagenet',                                  include_top=False, input_tensor=input_s)...

完整的工作代码

from tensorflow.keras.applications import MobileNetfrom tensorflow.keras.layers import (Conv2D, MaxPooling2D,                                      GlobalAveragePooling2D, Dropout, Dense)from tensorflow.keras import Modelfrom tensorflow import kerasfrom tensorflow.keras import layersimport tensorflow as tf 
CLASSES = 2# setup modelinput_s = layers.Input((224, 224, 3))base_model = keras.applications.MobileNet(weights='imagenet',                       include_top=False, input_tensor=input_s)x = layers.Conv2D(64, (3,3), padding='same',                   activation = keras.layers.PReLU(                      alpha_initializer='zeros',                       alpha_regularizer=None,                       alpha_constraint=None,                        shared_axes=None),                   strides= (2,2), name='layer1')(base_model.output)x = layers.MaxPooling2D(pool_size=(2,2))(x)x = layers.Conv2D(128, (3,3), padding='same',                   activation = keras.layers.PReLU(alpha_initializer='zeros',                                                   alpha_regularizer=None,                                                   alpha_constraint=None,                                                   shared_axes=None), name='layer2')(x)x = layers.GlobalAveragePooling2D(name='avg_pool')(x)x = layers.Dropout(0.4)(x)predictions = layers.Dense(CLASSES,                       activation=tf.keras.activations.sigmoid)(x)model = tf.keras.Model(inputs=base_model.input, outputs=predictions)# transfer learningfor layer in base_model.layers: layer.trainable = Falsemodel.compile(optimizer='rmsprop',              loss='categorical_crossentropy',              metrics=['accuracy'])

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注