ValueError:无法压缩dim[1],预期维度为1,对于输入形状为[?,17]的“度量/精度/压缩”(op:“压缩”)获得17

2024-07-03 07:39:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Alexnet检测糖尿病视网膜病变。 这是密码

path="D:\\dataset\\train\\t\\"

count = 1
imgList=list()
labelList=list()
ite = 1

print("Loading Model design ....")
json_file = open('Model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)

print("Loading weights ....")
loaded_model.load_weights("Model_weight.h5")

opt = Adam(lr=0.001)
loaded_model.compile(optimizer=opt, loss=keras.losses.sparse_categorical_crossentropy, metrics=['accuracy'])

while ite <= 1:
    limit = 10 * ite
    imgList=list()
    labelList=list()
    while count <= limit:
        imgC0 = path+"class_0_img_%d.jpeg" %(count)
        imgC1 = path+"class_1_img_%d.jpeg" %(count)
        imgC2 = path+"class_2_img_%d.jpeg" %(count)
        imgC3 = path+"class_3_img_%d.jpeg" %(count)
        imgC4 = path+"class_4_img_%d.jpeg" %(count)

        lC0 = np.zeros((1,17))
        lC1 = np.zeros((1,17))
        lC2 = np.zeros((1,17))
        lC3 = np.zeros((1,17))
        lC4 = np.zeros((1,17))

        lC0[0,0] = 1
        lC1[0,1] = 1
        lC2[0,2] = 1
        lC2[0,3] = 1
        lC2[0,4] = 1

        im0=cv.resize(cv.imread(imgC0),(227,227))
        im1=cv.resize(cv.imread(imgC1),(227,227))
        im2=cv.resize(cv.imread(imgC2),(227,227))
        im3=cv.resize(cv.imread(imgC3),(227,227))
        im4=cv.resize(cv.imread(imgC4),(227,227))

        imgList.append(im0)
        imgList.append(im1)
        imgList.append(im2)
        imgList.append(im3)
        imgList.append(im4)

        labelList.append(lC0)
        labelList.append(lC1)
        labelList.append(lC2)
        labelList.append(lC3)
        labelList.append(lC4)

        print(count)

        del(imgC0)
        del(imgC1)
        del(imgC2)
        del(imgC3)
        del(imgC4)
        del(lC0)
        del(lC1)
        del(lC2)
        del(lC3)
        del(lC4)
        count += 1

    labelMatrix = labelList

    xtr = np.array(imgList)
    xtr = xtr.reshape(-1,227,227,3)
    ytr = np.array(labelMatrix)
    ytr = ytr.reshape(-1,17)

    print(xtr.shape)
    print(ytr.shape)

    print(type(ytr))

    print("Model Training ....")
    loaded_model.fit(xtr,ytr,epochs=1,batch_size=50,validation_split=0.1)

    print("Saving Model weights ....")
    #loaded_model.save_weights("Model_weight.h5")

    ite += 1
    del(imgList)
    del(labelList)

print("Finished ....")

我得到一个错误,因为:

文件“”,第1行,在 运行文件('D:/Project/ModelTrain.py',wdir='D:/Project')

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第827行,在runfile中 execfile(文件名、命名空间)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第110行,在execfile中 exec(编译(f.read(),文件名,'exec'),命名空间)

文件“D:/Project/ModelTrain.py”,第103行,在 已加载的模型拟合(xtr、ytr、历代=1、批次大小=50、验证分割=0.1)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training.py”,第728行,格式为fit 使用多处理=使用多处理)

文件“C:\Users\Ammar amer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u v2.py”,第324行 总(单位时间=时间)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u v2.py”,第123行,在run\u one\u中 批处理输出=执行函数(迭代器)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u v2\u utils.py”,第86行,执行函数 分布函数(输入函数)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\eager\def\u function.py”,第457行,在调用中 结果=自身调用(*args,**kwds)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\eager\def\u function.py”,第503行,在调用中 self.\u initialize(args、kwds、add\u initializer\u to=initializer\u map)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\eager\def\u function.py”,第408行,在 *args,**科威特第纳尔)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\eager\function.py”,第1848行,位于“get\u concrete\u function\u internal\u garbage\u collected”中 图函数,自我,可能定义函数(args,kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\eager\function.py”,第2150行,在定义函数中 graph\u function=self.\u create\u graph\u function(args,kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\eager\function.py”,第2041行,在创建图形函数中 按值捕获=自身。_按值捕获)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\framework\func\u graph.py”,第915行,位于func\u py\u func的func\u图中 func_outputs=python_func(*func_args,**func_kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\eager\def\u function.py”,第358行,包装为 返回弱包装的(包装的(*args,**kwds)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u v2\u utils.py”,第73行,在分布式函数中 per_replica_函数,args=(模型,x,y,样本权重))

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\distribute\distribute\u lib.py”,第760行,在实验运行版本2中 返回self.\u扩展。为每个\u副本调用\u(fn,args=args,kwargs=kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\distribute\distribute\u lib.py”,第1787行,用于调用每个副本 返回自我。为每个副本(fn、ARG、kwargs)调用

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\distribute\distribute\u lib.py”,第2132行,位于每个副本的调用中 返回fn(*args,**kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\autgraph\impl\api.py”,包装中的第292行 返回函数(*args,**kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u v2\u utils.py”,第264行,在批量生产中 输出\损失\度量=模型。\输出\损失\度量)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u eager.py”,第315行,在批处理的列中 模型、输出、目标、样本权重=样本权重、遮罩=遮罩)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u eager.py”,第74行,在\u eager\u metrics\u fn中 跳过\u目标\u掩码=模型。\u准备\u跳过\u目标\u掩码()

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training.py”,第2063行,在“handle\u metrics”中 目标、输出、输出(U)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training.py”,第2014行,在每个输出的句柄度量中 度量值(fn,y_真,y_pred,权重=权重,掩码=掩码)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\engine\training\u utils.py”,第1067行,在call\u metric\u函数中 返回度量值fn(y_真,y_pred,样本重量=重量)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\metrics.py”,第193行,在调用中 副本\u本地\u fn,*args,**kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\distribute\distributed\u training\u utils.py”,第1135行,在call\u replica\u local\fn中 返回fn(*args,**kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\metrics.py”,第176行,在副本\u local\u fn中 update_op=self.update_state(*args,**kwargs)#pylint:disable=not callable

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\utils\metrics\u utils.py”,第75行,格式为: update_op=update_state_fn(*args,**kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\metrics.py”,第581行,处于更新状态 匹配=self.\u fn(y\u true,y\u pred,**self.\u fn\u kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\keras\metrics.py”,第2778行,稀疏分类 y_真=数组运算挤压(y_真,[-1])

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\util\dispatch.py”,第180行,在包装器中 返回目标(*args,**kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\util\deprecation.py”,第507行,新函数 返回函数(*args,**kwargs)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\ops\array\u ops.py”,第3649行,压缩 返回gen_数组操作挤压(输入、轴、名称)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\ops\gen\u array\u ops.py”,第10071行,压缩 “挤压”,输入=输入,挤压直径=轴,名称=名称)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\framework\op\u def\u library.py”,第793行,位于“应用”op\u helper中 op_def=op_def)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\framework\func\u graph.py”,第548行,在create\u op中 计算机(U设备)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\framework\ops.py”,第3429行,位于\u create\u op\u internal中 op_def=op_def)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\framework\ops.py”,第1773行,位于init 控制(输入操作)

文件“C:\Users\Ammar Ameer\Anaconda3\lib\site packages\tensorflow\u core\python\framework\ops.py”,第1613行,在_create\u C\u op中 提高价值或(str(e))

ValueError:无法压缩dim[1],预期维度为1,对于输入形状为[?,17]的“度量/精度/压缩”(op:“压缩”)获得17

有人能帮我吗。。 我已将模型另存为

model = Sequential()

# 1st Convolutional Layer
model.add(Conv2D(filters=96, input_shape=(227,227,3), kernel_size=(11,11), strides=(4,4), padding="valid", activation = "relu"))

# Max Pooling
model.add(MaxPool2D(pool_size=(3,3), strides=(2,2), padding="valid"))

# 2nd Convolutional Layer
model.add(Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), padding="same", activation = "relu"))

# Max Pooling
model.add(MaxPool2D(pool_size=(3,3), strides=(2,2), padding="valid"))

# 3rd Convolutional Layer
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding="same", activation = "relu"))

# 4th Convolutional Layer
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding="same", activation = "relu"))

# 5th Convolutional Layer
model.add(Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), padding="same", activation = "relu"))

# Max Pooling
model.add(MaxPool2D(pool_size=(3,3), strides=(2,2), padding="valid"))

# Passing it to a Fully Connected layer
model.add(Flatten())
# 1st Fully Connected Layer
model.add(Dense(units = 9216, activation = "relu"))

# 2nd Fully Connected Layer
model.add(Dense(units = 4096, activation = "relu"))

# 3rd Fully Connected Layer
model.add(Dense(4096, activation = "relu"))

# Output Layer
model.add(Dense(17, activation = "softmax")) #As we have two classes

opt = Adam(lr=0.001)
model.compile(optimizer=opt, loss=keras.losses.sparse_categorical_crossentropy, metrics=['accuracy'])

model.summary()


model_jason = model.to_json()
with open("Model.json","w") as json_file:
    json_file.write(model_jason)

model.save_weights("Model_weight.h5")

请帮我解决这个问题


Tags: 文件pycoremodellibpackagestensorflowsite