#python #tensorflow #keras #deep-learning #conv-neural-network
#python #тензорный поток #keras #глубокое обучение #conv-нейронная сеть
Вопрос:
следующий мой код, пожалуйста, может мне помочь
import tensorflow as tf
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
training_set = train_datagen.flow_from_directory(
'gopi_cnn_training_data',
target_size=(100, 100),
batch_size=32)
test_datagen = ImageDataGenerator(rescale=1./255)
test_set = test_datagen.flow_from_directory(
'gopi_cnn_test_data',
target_size=(100,100),
batch_size=32)
cnn = tf.keras.models.Sequential()
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu', input_shape=[100,100,3]))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu'))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
cnn.add(tf.keras.layers.Flatten())
cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))
cnn.add(tf.keras.layers.Dense(units=1, activation='softmax'))
cnn.compile(optimizer='adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
cnn.fit(x = training_set, validation_data = test_set, epochs = 25)
я получаю следующую ошибку
InvalidArgumentError: несовместимый размер матрицы: в [0]: [32,21], В [1]: [128,1]
[[узел MatMul (определен в C:UsersTHUMMAGOAppDataLocalContinuumanaconda3libsite-packagestensorflow_corepythonframeworkops.py:1751 ) ]] [Op:__вывод_распределенная_функция_5318]
Стек вызовов функций: distributed_function
Ответ №1:
Я повторил эту проблему, используя набор данных двоичного класса.
Для решения вам может потребоваться предоставить либо правильную функцию активации, либо функцию потери в вашем коде, как показано ниже:
cnn.add(tf.keras.layers.Dense(units=1, activation='sigmoid')) #for binary classes
cnn.compile(optimizer='adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
или определите units=no_of_classes
на конечном уровне модели и выберите соответствующую функцию активации и функцию потерь для реализации кода.