Я пытаюсь внедрить Ale xnet для обнаружения диабетической c ретинопатии. Вот код
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, в runfile ('D: /Project/ModelTrain.py', wdir = ' D: / Project ')
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py", строка 827, в исполняемом файле исполняемого файла (имя файла, пространство имен)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py", строка 110, в execfile exe c (скомпилировать (f .read (), имя файла, 'exe c'), пространство имен)
Файл "D: /Project/ModelTrain.py", строка 103, в загруженном_модели.fit (xtr, ytr, epochs = 1 , batch_size = 50, validation_split = 0.1)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflowflow_core \ python \ keras \ engine \ training.py", строка 728 в нужном случае use_multiprocessing = use_multiprocessing)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ training_v2.py", строка 324, в fit total_epochs = epochs)
* 1 017 * Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ training_v2.py", строка 123, в run_one_epoch batch_outs = execute_function (iterator)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ engine \ training_v2_utils.py", строка 86, в функции_функции распределенная_функция (input_fn))
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorsflow_core \ python \ eager \ def_function.py", строка 457, в вызов result = self._call (* args, ** kwds)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflowflow_core \ python \ eager \ def_function.py", строка 503, в _call self. _initialize (args, kwds, add_initializers_to = initializer_map)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ eager \ def_function.py", строка 408, в _initialize * args, ** kwds))
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \" tenorflow_core \ python \ eager \ function.py ", строка 1848, в _get_concrete_function_internal_garbage_collected graph_function, _, _ = self._maybe_define_function (args, kwargs)
Файл" C: \ Users \ Ammar Ameer \ Anaker lib \ site-packages \ tenorflow_core \ python \ eager \ function.py ", строка 2150, в _maybe_define_function graph_function = self._create_graph_function (args, kwargs)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ eager \ function.py ", строка 2041, в _create_graph_function capture_by_value = self._capture_by_value),
File" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ framework \ func_graph.py ", строка 915, в func_graph_from_py_func func_outputs = python_fun c (* func_args, ** func_kwargs)
File" C: \ Пользователи \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ eager \ def_function.py ", строка 358, в wrapped_fn, возвращают слабый_wrapped_fn (). , обернутый (* аргументы, ** kwds) * 104 0 *
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ keras \ engine \ training_v2_utils.py", строка 73, в распределенной_функции per_replica_function, args = (модель, x, y, sample_weights))
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ distribte \ distribte_lib.py", строка 760, в экспериментальном значении возврата_run_v2 self._extended.call_for_each_replica (fn, args = args, kwargs = kwargs)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensororflow_core \ python \ distribte \ distribte_lib. py ", строка 1787, в call_for_each_replica возвращает self._call_for_each_replica (fn, args, kwargs)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tensorflow_core \ tenthonflow_core \ python \ distribte \ distribute_lib. py ", строка 2132, в _call_for_each_replica возвращает fn (* args, ** kwargs)
File" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tensorflow_core \ python \ autograph \ impl \ api.py ", строка 292, в оболочке возвращает удовольствие c (* args, ** kwargs)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_v2_utils.py ", строка 264, в train_on_batch output_loss_metrics = model._output_loss_metrics)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_eager.py ", строка 315, в модели train_on_batch, выходы, цели, sample_weights = sample_weights, mask = mask)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ keras \ engine \ training_eager.py ", строка 74, в _eager_metrics_fn skip_target_masks = model._prepare_skip_target_masks ())
Файл" C: \ Users Аммар Амир \ Anaconda3 \ lib \ site-packages \ensororflow_core \ python \ keras \ engine \ training .py ", строка 2063, в _handle_metrics target, output, output_mask))
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ tenorflow_core \ python \ keras \ engine \ training.py ", строка 2014, в _handle_per_output_metrics metric_fn, y_true, y_pred, weights = weights, mask = mask)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ keras \ engine \ training_utils.py ", строка 1067, в call_metric_function возвращает metric_fn (y_true, y_pred, sample_weight = веса)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ keras \ metrics.py ", строка 193, в call replica_local_fn, * args, ** kwargs)
File" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ keras \ distribte \ distrib_training_utils.py ", строка 1135, в call_replica_local_fn, возвращает fn (* args, ** kwargs)
File" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensororflow_core \ python \ keras \ metrics.py ", строка 176, в replica_local_fn update_op = self.update_state (* args, ** kwargs) # pylint: disable = not-callable
File" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorsflow_core \ python \ keras \ utils \ metrics_utils.py ", строка 75, в оформленном update_op = update_state_fn (* args, ** kwargs)
File" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ keras \ metrics.py ", строка 581, в update_state соответствует = self._fn (y_true, y_pred, ** self._fn_kwargs)
File" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ keras \ metrics.py ", строка 2778, в sparse_categorical_accuracy y_true = array_ops.squeeze (y_true, [-1])
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensororflow_core \ python \ util \ dispatch.py", строка 180, в возвращаемой цели оболочки (* args, ** kwargs)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ util \ deprecation.py", строка 507, в new_func return fun c (* args, ** kwargs)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensororflow_core \ python \ ops \ array_ops.py", строка 3649, в squeeze возвращает gen_array_ops.squeeze (вход, ось, имя)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ ops \ gen_array_ops. py ", строка 10071, в squeeze" Squeeze ", input = input, squeeze_dims = axis, name = name)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ tenorflow_core \ python \ framework \ op_def_library.py ", строка 793, в _apply_op_helper op_def = op_def)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ framework \ func_graph.py ", строка 548, в create_op compute_device)
Файл" C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ framework \ ops.py " строка 3429, в _create_op_internal op_def = op_def)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ framework \ ops.py", строка 1773, в init control_input_ops)
Файл "C: \ Users \ Ammar Ameer \ Anaconda3 \ lib \ site-packages \ensorflow_core \ python \ framework \ ops.py", строка 1613, в _create_c_op повысить ValueError (str (e))
ValueError: Невозможно сжать dim [1], ожидаемое измерение 1, получено 17 для «метрики / точность / сжатие» (op: «Squeeze») с входными формами: [?, 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")
Пожалуйста, помогите мне решить эту проблему ..