自定义损失函数 ''' return K.mean(K.binary_crossentropy(y_pred, y_true), axis=-1) def my_loss2(y_true, y_pred): ''' 自定义损失函数 ''' cost = -K.mean(y_true * K.log(y_pred) + (1 - y_true) * K.log(1 - y_pred)) return cost if __name__ == '__main__': train_X_org, train_Y_org, test_X_org, test_Y_org, classes = kt_utils.load_dataset( ) # step1 对数据进行归一化处理 train_X = train_X_org / 255 test_X = test_X_org / 255 # step2 对标签数据进行转置处理,在keras中采用(样本数, 标签)这样的输入!!! train_Y = train_Y_org.T test_Y = test_Y_org.T # step3 创建一个模型 input_shape = train_X.shape[1:] # 64 X 64 X 3 happy_model = HappyModel(input_shape) # step4 编译模型(定义训练方式) # happy_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
使用keras来构建一个CNN模型 """ from keras.layers import Input, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten, Conv2D from keras.layers import MaxPooling2D from keras.models import Model import keras.backend as K import os import time try: from kt_utils import load_dataset except ImportError: raise ImportError('The file is not found. Please check the file name!') K.set_image_data_format('channels_last') os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset() # Normalize image vectors X_train = X_train_orig / 255. X_test = X_test_orig / 255. # Reshape Y_train = Y_train_orig.T Y_test = Y_test_orig.T print("number of training examples = " + str(X_train.shape[0])) print("number of test examples = " + str(X_test.shape[0])) print("X_train shape: " + str(X_train.shape)) print("Y_train shape: " + str(Y_train.shape)) print("X_test shape: " + str(X_test.shape)) print("Y_test shape: " + str(Y_test.shape))
X = BatchNormalization(axis=3,name=bn_name_base+"2c")(X) #捷径 X_shortcut = Conv2D(filters=F3, kernel_size=(1,1), strides=(s,s), padding="valid", name=conv_name_base+"1", kernel_initializer=glorot_uniform(seed=0))(X_shortcut) X_shortcut = BatchNormalization(axis=3,name=bn_name_base+"1")(X_shortcut) #最后一步 X = Add()([X,X_shortcut]) X = Activation("relu")(X) return X if __name__ == '__main__': X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = kt_utils.load_dataset() # Normalize image vectors X_train = X_train_orig/255. X_test = X_test_orig/255. # Reshape Y_train = Y_train_orig.T Y_test = Y_test_orig.T index = 3 plt.imshow(X_train_orig[index]) plt.show() """ #创建一个模型实体 happy_model = HappyModel(X_train.shape[1:]) #编译模型