首页 文章

ValueError ResNet Keras

提问于
浏览
1

我试图使用Keras ResNet 50应用程序模型解决我的问题:

#Tensorflow and tf.keras
import tensorflow as tf
from tensorflow import keras
#tf.enable_eager_execution()

#Helper libraries
import numpy as np
import matplotlib.pyplot as plt

import 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.shape
train_images = train_images / 255.0
test_images = test_images / 255.0
print(train_images.shape)

#Build the model
model = 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()

#Train
model.fit(train_images, train_labels, epochs=10)
#model.save_weights('models/muenzen.h5')

#Evaluate
loss, accuracy = model.evaluate(test_images, test_labels)
print('Accuracy', accuracy)

#Prediction
prediction = model.predict(test_images[0:1])
print(prediction)

但得到以下 Ouput /错误:

形状火车图像:(3865,240,320,3)形状火车标签:(3865,)形状测试图像:(967,240,320,3)形状测试标签:(967,)(3865,240,320, 3)回溯(最近一次调用最后一次):文件“C:/Users/Christian/PycharmProjects/MuenzbetragserkennungResNet/Muenzbetragserkennung_ResNet.py”,第34行,在model.fit(train_images,train_labels,epochs = 10)文件“C:\ Users \ Christian \ AppData \ Roaming \ Python \ Python36 \ site-packages \ tensorflow \ python \ keras \ engine \ training.py“,第1278行,in fit validation_split = validation_split)文件”C:\ Users \ Christian \ AppData \ Roaming \ Python \ Python36 \ site-packages \ tensorflow \ python \ keras \ engine \ training.py“,第917行,_standardize_user_data exception_prefix ='target')文件”C:\ Users \ Christian \ AppData \ Roaming \ Python \ Python36 \ site -packages \ tensorflow \ python \ keras \ engine \ training_utils.py“,第191行,在standardize_input_data'但是得到了形状为'str(data_shape)的数组)ValueError:检查目标时出错:期望global_max_pooling2d有形状(2048,)bu得到形状的数组(1,)处理完成退出代码1

我已经尝试过不同的池版本,但只有其他的ValueErrors . 模型应输出一个值(图像中的硬币值) .

预先感谢您的帮助 .

1 回答

  • 0

    问题是您的标签是一维的,但模型的输出是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图层输出一个标量,现在与您的目标兼容 .

相关问题