【发布时间】:2020-12-20 13:49:17
【问题描述】:
我正在 Window 10 上的 Keras 2.1.0 中为非图像数据构建一个 CNN。
我的输入特征是一个 3x12 的非负数矩阵,我的输出是一个长度为 6x1 的二进制多标签向量
我遇到了这个错误预计 conv2d_14_input 的形状为 (3, 12, 1) 但得到的数组的形状为 (3, 12, 6500)
下面是我的代码
import tensorflow as tf
from scipy.io import loadmat
import numpy as np
from tensorflow.keras.layers import BatchNormalization
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, Dropout
from tensorflow.keras.layers import Conv2D, MaxPool2D, Flatten
reshape_channel_train = loadmat('reshape_channel_train')
reshape_channel_test = loadmat('reshape_channel_test.mat')
reshape_label_train = loadmat('reshape_label_train')
reshape_label_test = loadmat('reshape_label_test')
X_train = reshape_channel_train['store_train']
X_test = reshape_channel_test['store_test']
X_train = np.expand_dims(X_train,axis = 0)
X_test = np.expand_dims(X_test, axis = 0)
Y_train = reshape_label_train['label_train']
Y_test = reshape_label_test['label_test']
classifier = Sequential()
classifier.add(Conv2D(8, kernel_size=(3,3) , input_shape=(3, 12, 1), padding="same"))
classifier.add(BatchNormalization())
classifier.add(Activation('relu'))
classifier.add(Conv2D(8, kernel_size=(3,3), input_shape=(3, 12, 1), padding="same"))
classifier.add(BatchNormalization())
classifier.add(Activation('relu'))
classifier.add(Flatten())
classifier.add(Dense(8, activation='relu'))
classifier.add(Dense(6, activation='sigmoid'))
classifier.compile(optimizer='nadam', loss='binary_crossentropy', metrics=['accuracy'])
history = classifier.fit(X_train, Y_train, batch_size = 32, epochs=100,
validation_data=(X_test, Y_test), verbose=2)
经过一番搜索,我使用了维度扩展技巧,但似乎不起作用
X_train = np.expand_dims(X_train,axis = 0)
X_test = np.expand_dims(X_test, axis = 0)
包含 6500 个训练实例的 X_train 变量是从尺寸为 3x12x6500 的 Matlab .mat 文件加载的。
每个训练实例都是一个 3x12 矩阵。
在使用 expand_dim 技巧之前,第 k 个训练样本可以由 X_train[:,:,k] 和 X_train[:,:,k] 调用.shape 将返回 (3,12)。 X_train.shape 也会返回 (3, 12, 6500)
之后使用 expand_dim 技巧命令 X_train[:,:,k].shape 将返回 (1, 3, 6500)
请帮帮我! 谢谢
【问题讨论】:
标签: keras multidimensional-array numpy-ndarray conv-neural-network numpy-slicing