ValueError ResNet Keras

我尝试使用以下代码在我的问题上使用Keras的ResNet 50应用模型:

#Tensorflow and tf.kerasimport tensorflow as tffrom tensorflow import keras#tf.enable_eager_execution()#Helper librariesimport numpy as npimport matplotlib.pyplot as pltimport Muenzbetragserkennung_input_ResNet#print(tf.__version__)#Dataset#Training and test data(train_images, train_labels), (test_images, test_labels) = Muenzbetragserkennung_input_ResNet.read_input_shuffle()batch_size, height, width, channels = train_images.shapetrain_images = train_images / 255.0test_images = test_images / 255.0print(train_images.shape)#Build the modelmodel = tf.keras.applications.resnet50.ResNet50(include_top=False, weights=None, input_tensor=None, input_shape=(height, width, channels), pooling='max')model.compile(optimizer=tf.train.AdamOptimizer(),          loss='mean_squared_error',          metrics=['accuracy'])#model.summary()#Trainmodel.fit(train_images, train_labels, epochs=10)#model.save_weights('models/muenzen.h5')#Evaluateloss, accuracy = model.evaluate(test_images, test_labels)print('Accuracy', accuracy)#Predictionprediction = model.predict(test_images[0:1])print(prediction)

但得到了以下输出/错误:

训练图像形状: (3865, 240, 320, 3)

训练标签形状: (3865,)

测试图像形状: (967, 240, 320, 3)

测试标签形状: (967,)

(3865, 240, 320, 3)

Traceback (most recent call last):
File”C:/Users/Christian/PycharmProjects/MuenzbetragserkennungResNet/Muenzbetragserkennung_ResNet.py”, line 34, in model.fit(train_images, train_labels, epochs=10)

File “C:\Users\Christian\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\keras\engine\training.py”, line 1278, in fit validation_split=validation_split)

File “C:\Users\Christian\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\keras\engine\training.py”, line 917, in _standardize_user_data exception_prefix=’target’)

File “C:\Users\Christian\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\keras\engine\training_utils.py”, line 191, in standardize_input_data ‘ but got array with shape ‘ + str(data_shape))

ValueError: 检查目标时出错: 期望global_max_pooling2d具有形状(2048,),但得到的数组形状为(1,)

进程以退出码1结束

我已经尝试了不同的池化版本,但只得到了其他ValueError。模型应该输出一个值(图像中硬币的价值)。

提前感谢您的帮助。


回答:

问题在于您的标签是一维的,但您的模型的输出是一个2048维的向量。这是自然的,因为您没有添加任何层来产生正确的输出。这可以这样做:

resnet_model = tf.keras.applications.resnet50.ResNet50(include_top=False, weights=None, input_tensor=None, input_shape=(height, width, channels), pooling='max')x = Dense(128, activation='relu')(resnet_model.output)x = Dense(1, activation='relu')(x)model = Model(resnet_model.input, x)

请注意,最后的Dense层输出一个标量,现在与您的目标兼容。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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