美文网首页
“AI Earth”人工智能创新挑战赛——AI助力精准气象和海洋

“AI Earth”人工智能创新挑战赛——AI助力精准气象和海洋

作者: 许志辉Albert | 来源:发表于2021-02-22 14:20 被阅读0次
    # 导入tensorflow库
    import tensorflow as tf
    #keras并不具备处理如张量,卷积等底层操作。keras依赖于处理张量的库就成为“后端引擎”
    import tensorflow.keras.backend as K
    from tensorflow.keras.layers import *
    from tensorflow.keras.models import *
    from tensorflow.keras.optimizers import *
    from tensorflow.keras.callbacks import *
    from tensorflow.keras.layers import Input 
    import numpy as np
    import os
    # 用于结果的打包
    import zipfile
    #自定义衡量准则,RMSE(均方误差)
    def RMSE(y_true, y_pred):
        return tf.sqrt(tf.reduce_mean(tf.square(y_true - y_pred)))
    #构建模型
    def build_model():  
        inp    = Input(shape=(12,24,72,4))  
        
        x_4    = Dense(1, activation='relu')(inp)   
        x_3    = Dense(1, activation='relu')(tf.reshape(x_4,[-1,12,24,72]))
        x_2    = Dense(1, activation='relu')(tf.reshape(x_3,[-1,12,24]))
        x_1    = Dense(1, activation='relu')(tf.reshape(x_2,[-1,12]))
         
        x = Dense(64, activation='relu')(x_1)  
        x = Dropout(0.25)(x) 
        x = Dense(32, activation='relu')(x)   
        x = Dropout(0.25)(x)  
        output = Dense(24, activation='linear')(x)   
        model  = Model(inputs=inp, outputs=output)
    
        adam = tf.optimizers.Adam(lr=1e-3,beta_1=0.99,beta_2 = 0.99) 
        model.compile(optimizer=adam, loss=RMSE)
    
        return model 
    
    model = build_model()
    model.load_weights('./user_data/model_data/model_mlp_baseline.h5')
    
    test_path = './tcdata/enso_round1_test_20210201/'
    
    ### 1. 测试数据读取
    files = os.listdir(test_path)
    test_feas_dict = {}
    for file in files:
        test_feas_dict[file] = np.load(test_path + file)
        
    ### 2. 结果预测
    test_predicts_dict = {}
    for file_name,val in test_feas_dict.items():
        test_predicts_dict[file_name] = model.predict(val).reshape(-1,)
    #     test_predicts_dict[file_name] = model.predict(val.reshape([-1,12])[0,:])
    
    ### 3.存储预测结果
    for file_name,val in test_predicts_dict.items(): 
        np.save('./result/' + file_name,val)
    
    #打包目录为zip文件(未压缩)
    def make_zip(source_dir='./result/', output_filename = 'result.zip'):
        zipf = zipfile.ZipFile(output_filename, 'w')
        pre_len = len(os.path.dirname(source_dir))
        source_dirs = os.walk(source_dir)
        print(source_dirs)
        for parent, dirnames, filenames in source_dirs:
            print(parent, dirnames)
            for filename in filenames:
                if '.npy' not in filename:
                    continue
                pathfile = os.path.join(parent, filename)
                arcname = pathfile[pre_len:].strip(os.path.sep)   #相对路径
                zipf.write(pathfile, arcname)
        zipf.close()
    make_zip()
    

    后续会有一个keras的API说明;总结完链接加后面

    相关文章

      网友评论

          本文标题:“AI Earth”人工智能创新挑战赛——AI助力精准气象和海洋

          本文链接:https://www.haomeiwen.com/subject/kbmhfltx.html