• [ML]keras和tensorflow实现同样的模型


    import tensorflow as tf
    from input_data import Data
    import matplotlib.pyplot as plt
    import os
    
    
    data=Data("./data/")
    
    
    X=tf.placeholder(tf.float32,[None,40,40,3])
    y=tf.placeholder(tf.float32,[None,62])
    keep_prob=tf.placeholder(tf.float32)
    
    conv1_1=tf.layers.conv2d(X,filters=6,kernel_size=4,strides=1,padding='same',activation=tf.nn.relu)
    conv1_2=tf.layers.conv2d(conv1_1,filters=12,kernel_size=4,strides=1,padding='same',activation=tf.nn.relu)
    pool1=tf.layers.max_pooling2d(conv1_2,pool_size=4,strides=2,padding='same')
    
    dropout1=tf.nn.dropout(pool1,keep_prob=keep_prob)
    
    conv2_1=tf.layers.conv2d(dropout1,filters=24,kernel_size=4,strides=1,padding='same',activation=tf.nn.relu)
    conv2_2=tf.layers.conv2d(conv2_1,filters=48,kernel_size=4,strides=1,padding='same',activation=tf.nn.relu)
    pool2=tf.layers.max_pooling2d(conv2_2,pool_size=4,strides=2,padding='same')
    print pool2.shape
    reshape1=tf.reshape(pool2,[-1,4800])
    print reshape1.shape
    dropout2=tf.nn.dropout(reshape1,keep_prob=keep_prob)
    
    dense1=tf.layers.dense(dropout2,units=62)
    
    loss = tf.losses.softmax_cross_entropy(onehot_labels=y,logits=dense1)
    step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    accuracy = tf.metrics.accuracy(labels=tf.argmax(y,axis=1),predictions=tf.argmax(dense1,axis=1))[1]
    
    
    plt.ion()
    plt.show()
    
    x_draw=[]
    y_draw=[]
    
    weight_path="./result/tf/weights.w"
    weight_path_index="./result/tf/weights.w.index"
    
    
    saver = tf.train.Saver()
    
    with tf.Session() as sess:
    
        sess.run([tf.global_variables_initializer(),tf.initialize_local_variables()])
    
        if os.path.exists(weight_path_index):
            saver.restore(sess, weight_path)
    
    
        train_batch_size = 100
        test_batch_size = 100
    
        x_axis=0
    
        for i in range(50*50):
            X_train, y_train = data.next_batch(train_batch_size, 'train')
            _,loss_val,accuracy_val=sess.run([step,loss,accuracy],feed_dict={X:X_train,y:y_train,keep_prob:0.7})
            print("train	loss_val=>" + str(loss_val) + "		accuracy_val=>" + str(accuracy_val))
    
            if i%50==49:
                X_test, y_test = data.next_batch(test_batch_size, 'test')
                loss_val,accuracy_val=sess.run([loss,accuracy],feed_dict={X:X_test,y:y_test,keep_prob:1})
                print("test	loss_val=>"+str(loss_val)+"		accuracy_val=>"+str(accuracy_val))
    
                x_draw.append(x_axis)
                y_draw.append(accuracy_val)
                x_axis+=1
    
                plt.title("tf")
                plt.plot(x_draw, y_draw, color='b')
                plt.pause(0.1)
                saver.save(sess,weight_path)
    
        plt.savefig("./result/tf/result.png")
    

      

    # -*- coding: utf-8 -*-
    
    from keras.models import Sequential
    from keras.layers import Dense,Flatten,Dropout,Reshape
    from keras.layers.convolutional import Conv2D,MaxPooling2D
    from keras import backend as K
    import matplotlib.pyplot as plt
    import os
    from input_data import Data
    from keras.optimizers import Adam
    
    data=Data('./data/')
    
    
    def build4(_name):
        model = Sequential(name=_name)
    
        model.add(Conv2D(input_shape=(40, 40, 3), filters=6, kernel_size=4, strides=1, padding='same', activation='relu'))
        model.add(Conv2D(filters=12, kernel_size=4, strides=1, padding='same', activation='relu'))
        model.add(MaxPooling2D(pool_size=4, strides=2, padding='same'))
    
        model.add(Dropout(0.3))
    
        model.add(Conv2D(filters=24, kernel_size=4, strides=1, padding='same', activation='relu'))
        model.add(Conv2D(filters=48, kernel_size=4, strides=1, padding='same', activation='relu'))
        model.add(MaxPooling2D(pool_size=4, strides=2, padding='same'))
    
    
        model.add(Flatten())
        model.add(Dropout(0.3))
    
        model.add(Dense(units=62, activation='softmax'))
    
        model.compile(optimizer=Adam(lr=0.001), loss='categorical_crossentropy', metrics=['accuracy'])
        return model
    
    
    
    # model=build1("x1")
    # model=build2("x2")
    # model=build3("x3") #收敛快
    model=build4("x4")
    # model=build5("x5")
    # model=build6("x6")
    # model=build7("x7")
    # model=build8("x8")
    # model=build9("x9")
    # model=build10("x10")
    # model=build11("x11")
    
    print(model.summary())
    
    weight_path="./result/"+model.name+"/weights.w"
    if not os.path.exists("./result/"+model.name):
        os.mkdir("./result/"+model.name)
    
    if os.path.exists(weight_path):
        model.load_weights(weight_path)
    
    plt.ion()
    plt.show()
    
    x_draw=[]
    y_draw=[]
    
    train_batch_size=5000
    test_batch_size=100
    
    for i in range(50):
        X, y = data.next_batch(train_batch_size, 'train')
        model.fit(X,y,batch_size=100,epochs=1,verbose=1)
        model.save_weights(weight_path)
    
    
        X_test, y_test = data.next_batch(test_batch_size, 'test')
        loss, accuracy = model.evaluate(X_test,y_test,batch_size=test_batch_size)
    
        print("epoch"+str(i)+",accuracy=>"+str(accuracy))
    
        x_draw.append(i)
        y_draw.append(accuracy)
    
        plt.title(model.name)
        plt.plot(x_draw,y_draw,color='b')
    
        plt.pause(0.1)
    
    plt.savefig("./result/"+model.name+"/result.png")
    ''''''
    

      

  • 相关阅读:
    挑选公司--评分--给未来3年估价
    股票投资步骤
    指数基金怎么选
    指数基金梳理
    android fragment 生命周期
    mac-jmeter安装
    linux apline
    go mod 超时问题
    nginx: [alert] kill(5272, 15) failed (3: No such process) 启动不了,apache搞得鬼
    时间复杂度和空间复杂度1
  • 原文地址:https://www.cnblogs.com/xmxkkk/p/7570224.html
Copyright © 2020-2023  润新知