我正在尝试从CNN层获取输出,然后再次将此输出提供给CNN模型,但是我无法重塑输出,而是将其提供给模型。
我尝试了几种重塑技术,例如np.reshape(x)
,但出现尺寸和列表问题。我的代码如下
Y = traindata.iloc[:,0]
C = testdata.iloc[:,0]
T = testdata.iloc[:,1:42]
scaler = Normalizer().fit(X)
trainX = scaler.transform(X)
scaler = Normalizer().fit(T)
testT = scaler.transform(T)
y_train = np.array(Y)
y_test = np.array(C)
X_train = np.reshape(trainX, (trainX.shape[0],trainX.shape[1],1))
X_test = np.reshape(testT, (testT.shape[0],testT.shape[1],1))
cnn = Sequential()
cnn.add(Convolution1D(64, 3, border_mode="same",activation="relu",input_shape=(41, 1)))
cnn.add(MaxPooling1D(pool_length=(2)))
cnn.add(Flatten())
cnn.add(Dense(1, activation="relu"))
cnn.add(Dropout(0.5))
cnn.add(Dense(1, activation="sigmoid"))
trainX, testX, trainy, testy = train_test_split(X_train, y_train, test_size=0.2, random_state=2)
cnn.compile(loss="binary_crossentropy", optimizer="adam",metrics=['accuracy'])
# train
checkpointer = callbacks.ModelCheckpoint(filepath="/content/checkpoint1.hdf5", verbose=1, save_best_only=True, monitor='val_acc',mode='max')
csv_logger = CSVLogger('/content/cnntrainanalysis1.csv',separator=',', append=False)
history=cnn.fit(trainX, trainy, nb_epoch=5,validation_data=(testX, testy),callbacks=[checkpointer,csv_logger])
csv_logger1 = CSVLogger('/content/cnntrainanalysis2.csv',separator=',', append=False)
cnn.save("/content/cnn_model.hdf5")
layer_outputs = [layer.output for layer in cnn.layers]
activation_model = Model(inputs=cnn.input, outputs=layer_outputs)
activations = activation_model.predict(trainX)
我想再次将activations = activation_model.predict(trainX)
的激活信息提供给我的cnn模型。请告诉我我该怎么做?
print(activations)
的输出如下:
0.01763991, 0.05897206],
[0.0343827 , 0. , 0. , ..., 0.12232751,
0. , 0.13022624],
[0.01086476, 0. , 0. , ..., 0.18884507,
0.02148425, 0.04976999],
...,
[0.01638399, 0. , 0. , ..., 0.20785347,
0. , 0.03860399],
[0. , 0. , 0. , ..., 0.21488364,
0. , 0.10750664],
[0.01316635, 0. , 0. , ..., 0.19352476,
0. , 0.06698873]]], dtype=float32), array([[0.00233197, 0. , 0.00843151, ..., 0.19352476, 0. ,
0.06698873]], dtype=float32), array([[0.]], dtype=float32), array([[0.]], dtype=float32), array([[0.80365914]], dtype=float32)] ```