zoukankan      html  css  js  c++  java
  • 寒假学习日报(四十三)

      今天把昨晚的bug调试好了,问题出在nn包中的方法引用错了,其次就是定义初始化之后忘记sess.run一次。下面附上正确代码:

    from __future__ import print_function
    import tensorflow as tf
    from tensorflow.examples.tutorials.mnist import input_data
    import os
    
    # 保证session.run能够正常运行
    tf.compat.v1.disable_eager_execution()
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    mnist = input_data.read_data_sets("MNIST_Data", one_hot=True)
    # 设置训练参数
    learning_rate = 0.001
    training_step = 10000
    batch_size = 128
    display_step = 400
    # 设置双向循环神经网络参数
    num_input = 28
    timestep = 28
    num_hidden = 128
    num_classes = 10
    # 构造计算图输入变量
    X = tf.compat.v1.placeholder("float32", [None, timestep, num_input])
    Y = tf.compat.v1.placeholder("float32", [None, num_classes])
    # 设置权重和偏值
    weights = {
        'out': tf.Variable(tf.compat.v1.random_normal([2*num_hidden, num_classes]))
    }
    biases = {
        'out': tf.Variable(tf.compat.v1.random_normal([num_classes]))
    }
    
    
    # 自定义双向循环神经网络函数
    def BiRNN(X, weights, biases):
        x = tf.unstack(X, timestep, 1)
        lstm_fw_cell = tf.compat.v1.nn.rnn_cell.BasicLSTMCell(num_hidden, forget_bias=1.0)
        lstm_bw_cell = tf.compat.v1.nn.rnn_cell.BasicLSTMCell(num_hidden, forget_bias=1.0)
        try:
            outputs, _, _ = tf.compat.v1.nn.static_bidirectional_rnn(lstm_fw_cell, lstm_bw_cell, x, dtype=tf.float32)
        except Exception:
            outputs = tf.compat.v1.nn.static_bidirectional_rnn(lstm_fw_cell, lstm_bw_cell, x, dtype=tf.float32)
        return tf.matmul(outputs[-1], weights['out']) + biases['out']
    
    
    # 获取神经网络输出层logits,使用softmax激活函数将logits映射成各类取值概率,结果赋值给prediction
    logits = BiRNN(X, weights, biases)
    prediction = tf.nn.softmax(logits)
    # 通过交叉熵构建损失函数,并使用梯度下降法求解,将结果赋值给train_op。
    loss_op = tf.reduce_mean(tf.compat.v1.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y))
    optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=learning_rate)
    train_op = optimizer.minimize(loss_op)
    # 计算训练模型的准确率
    correct_pred = tf.equal(tf.argmax(prediction, 1), tf.argmax(Y, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
    # 初始化全部变量
    init = tf.compat.v1.global_variables_initializer()
    # Session
    with tf.compat.v1.Session() as sess:
        sess.run(init)
        # 训练模型
        for step in range(1, training_step+1):
            batch_x, batch_y = mnist.train.next_batch(batch_size)
            batch_x = batch_x.reshape((batch_size, timestep, num_input))
            sess.run(train_op, feed_dict={X: batch_x, Y: batch_y})
            if step % display_step == 0 or step == 1:
                loss, acc = sess.run([loss_op, accuracy], feed_dict={X: batch_x, Y: batch_y})
                print("Step"+str(step)+",Minbatch Loss="+"{:.4f}".format(loss)+",Training Accuracy="+"{:.3f}".format(acc))
        print("Optimization Finished!")
        # 设置测试数据长度为128,通过训练模型对测试数据进行预测,打印测试数据的准确率
        test_len = 128
        test_data = mnist.test.images[:test_len].reshape((-1, timestep, num_input))
        test_label = mnist.test.labels[:test_len]
        print("Test Accuracy:", sess.run(accuracy, feed_dict={X: test_data, Y: test_label}))

      这段代码是通过MNIST数据集来实现简单的双向循环神经网络,运行如下

       此外今天还调试了一下虚拟机,准备开始写spark的实验报告了,在那之前想重装一下hive,但配置mysql服务的时候忘记了密码,后来在重置密码的过程中发现mysql服务出现了问题,一直无法启动,最后只能把原来的删掉重新装了一遍:

    参考博客:https://blog.csdn.net/msmzm/article/details/111498997

       这次安装是下载的免安装版,自行配置my.ini文件后通过cmd进行操作的,my.ini文件配置如下:

    [mysqld]
    # 设置3306端口
    port=3306
    # 设置mysql的安装目录
    basedir=D:mysql-8.0.22-winx64
    # 设置mysql数据库的数据的存放目录
    datadir=D:mysql-8.0.22-winx64Data
    # 允许最大连接数
    max_connections=200
    # 允许连接失败的次数。
    max_connect_errors=10
    # 服务端使用的字符集默认为utf8mb4
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 默认使用“mysql_native_password”插件认证
    #mysql_native_password
    default_authentication_plugin=mysql_native_password
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8mb4

      cmd命令:

    先切换到安装后的bin目录下之后先执行:mysqld --initialize --console

    执行成功后在最后一行(我的已经安装好了,无法重现当时的情况,因此直接使用参考博客内的截图),后是自动生成的初始密码,保存一下,首次登录时要用。

    之后执行命令:mysqld install

    随后启动服务:net start mysql

    登录:mysql -u root -p 

    登录时会要求你输入密码,输入刚才生成的那个,进入之后直接修改密码,其他教程会让你输入use mysql,我这里输入时提示让我先重置密码。

    重置密码命令(假设重置密码为123456):

    (1)ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

    (2)ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

    我这里记得是用第二种。

    当提示时证明修改成功。

  • 相关阅读:
    OO第四单元单元总结
    OO第三单元单元总结
    OO第二单元单元总结
    OO第一单元单元总结
    Java虚拟机解释器与编译器
    20155321 《Java程序设计》实验三 敏捷开发与XP实践
    20155321 2016-2017-2 《Java程序设计》第十周学习总结
    20155321 2016-2017-2 《Java程序设计》第九周学习总结
    20155321实验二 Java面向对象程序设计
    20155321 2016-2017-2 《Java程序设计》第八周学习总结
  • 原文地址:https://www.cnblogs.com/20183711PYD/p/14427690.html
Copyright © 2011-2022 走看看