Numpy массив не принимается моделью keras - PullRequest
0 голосов
/ 10 января 2020
print(x_train.shape)
model.fit(x_train, y_train, epochs=15, batch_size=10)

дает вывод

(1020, 224, 224, 3, 5)
Error when checking target:expected conv3d_11 to have 5 dimensions, but got array with shape (1020, 1)

Один пример ввода представляет собой массив numpy из 5 изображений. Как мне изменить / предварительно обработать мой ввод, чтобы он работал?

Редактировать:

Моя модель Keras на данный момент представляет собой один 3d Conv net.

input_shape = (224, 224, 3, 5)
model = Sequential([
Conv3D(64, (3, 3, 1), input_shape=input_shape, padding='same', activation='relu', data_format='channels_last')
])

Все еще получаю ту же ошибку. Кроме того, объяснение размеров: 1020: нет. образцов, 224x224x3: размер одного изображения, 5: количество изображений в образце,

1 Ответ

0 голосов
/ 13 апреля 2020

Ниже приведен пример кода для реализации Conv3D

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Conv3D, MaxPooling3D, BatchNormalization
import numpy as np

input_shape=(224, 224, 3, 5)   

model = Sequential()
#C1
model.add(Conv3D(16, (3, 3, 1), strides=(1, 2, 2), padding='same',activation='relu',data_format= "channels_first", input_shape=input_shape))
model.add(MaxPooling3D(pool_size=(1, 2, 2),data_format= "channels_first", padding='same'))
model.add(BatchNormalization())
#C2
model.add(Conv3D(32, (3, 3, 1), strides=(1, 1, 1), padding='same',data_format= "channels_first",  activation='relu'))
model.add(MaxPooling3D(pool_size=(1, 2, 2),data_format= "channels_first", padding='same'))
model.add(BatchNormalization())
#C3
model.add(Conv3D(64, (3, 3, 1), strides=(1, 1, 1), padding='same',data_format= "channels_first",  activation='relu'))
model.add(MaxPooling3D(pool_size=(1, 2, 2), data_format= "channels_first", padding='same'))
model.add(BatchNormalization())

model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(256, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

opt_adam = tf.keras.optimizers.Adam(lr=0.00001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='categorical_crossentropy', optimizer=opt_adam, metrics=['accuracy'])

print(model.summary())

Вывод:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv3d (Conv3D)              (None, 16, 224, 2, 3)     32272     
_________________________________________________________________
max_pooling3d (MaxPooling3D) (None, 16, 224, 1, 2)     0         
_________________________________________________________________
batch_normalization (BatchNo (None, 16, 224, 1, 2)     8         
_________________________________________________________________
conv3d_1 (Conv3D)            (None, 32, 224, 1, 2)     4640      
_________________________________________________________________
max_pooling3d_1 (MaxPooling3 (None, 32, 224, 1, 1)     0         
_________________________________________________________________
batch_normalization_1 (Batch (None, 32, 224, 1, 1)     4         
_________________________________________________________________
conv3d_2 (Conv3D)            (None, 64, 224, 1, 1)     18496     
_________________________________________________________________
max_pooling3d_2 (MaxPooling3 (None, 64, 224, 1, 1)     0         
_________________________________________________________________
batch_normalization_2 (Batch (None, 64, 224, 1, 1)     4         
_________________________________________________________________
flatten (Flatten)            (None, 14336)             0         
_________________________________________________________________
dropout (Dropout)            (None, 14336)             0         
_________________________________________________________________
dense (Dense)                (None, 256)               3670272   
_________________________________________________________________
dropout_1 (Dropout)          (None, 256)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 2)                 514       
=================================================================
Total params: 3,726,210
Trainable params: 3,726,202
Non-trainable params: 8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...