新手使用TensorFlow – 尝试将MNIST多层网络改造成计算器

能否有人帮助或指导我如何改进以使其正常工作?

我将输入的数量改为2,并生成了一些随机数据,“x1”和“x2”(一个数字加到另一个数字上)。我的想法是使用变量“add”和“mul”作为真实输出,并基于此计算成本(变量“Y”),但我在操纵数据以正确输入方面遇到了麻烦。

我尝试创建另一个变量:

x = tf.Variable([100 * np.random.random_sample([100]), 100 * np.random.random_sample([100]))

以及其他几种替代方法,但这导致了错误。如果我的代码中还有其他问题,请批评!任何帮助都很有用。

谢谢你。

'''使用TensorFlow库实现的循环神经网络示例。作者: *********'''import numpy as npimport tensorflow as tffrom tensorflow.models.rnn import rnn, rnn_cell# import matplotlib.pyplot as plt# from mpl_toolkits.mplot3d import Axes3D# 参数training_iters = 1000n_epochs       = 1000batch_size     = 128display_step   = 100learning_rate  = 0.001n_observations = 100n_input        = 2   # 输入数据(数字 + 数字)n_steps        = 28  # 时间步n_hidden_1     = 256 # 第一层特征数量n_hidden_2     = 256 # 第二层特征数量n_classes      = 1   # 输出X  = tf.placeholder("float", [None, n_input])X1 = tf.placeholder(tf.float32)X2 = tf.placeholder(tf.float32)Y  = tf.placeholder(tf.float32)# 随机输入数据x1 = 100 * np.random.random_sample([100,])x2 = 100 * np.random.random_sample([100,])add = tf.add(x1, x2)mul = tf.mul(X1, X2)weights = {    'hidden1': tf.Variable(tf.random_normal([n_input,    n_hidden_1])),    #'hidden2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),    'out':     tf.Variable(tf.random_normal([n_hidden_1,  n_classes]))}biases = {    'hidden1': tf.Variable(tf.random_normal([n_hidden_1])),    #'hidden2': tf.Variable(tf.random_normal([n_hidden_2])),    'out':     tf.Variable(tf.random_normal([n_classes]))}def RNN(_X1, _weights, _biases):    # 第一层    layer_1 = tf.add(tf.matmul(_X1, weights['hidden1']), biases['hidden1'])    layer_1 = tf.nn.relu(layer_1)    # 第二层    # layer_1_2 = tf.add(tf.matmul(_X2, weights['hidden2']), biases['hidden2'])    # layer_1_2 = tf.nn.relu(layer_1_2)    # 使用RELU激活的隐藏层    layer_2   = tf.add(tf.matmul(layer_1, weights['out']), biases['out'])    output    = tf.nn.relu(layer_2)    return outputpred         = RNN(X1, weights, biases)cost         = tf.reduce_sum(tf.pow(pred - Y, 2)) / (n_observations - 1)optimizer    = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) # Adam优化器correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(Y,1))init     = tf.initialize_all_variables()# initData = tf.initialize_variables(x1.all(), x2.all())with tf.Session() as sess:    # 这里我们告诉TensorFlow我们想要初始化图中的所有变量,以便我们可以使用它们    sess.run(init)    # 拟合所有训练数据    prev_training_cost = 0.0    for epoch_i in range(n_epochs) :        for (_x1) in x1:            for (_x2) in x2:                print("输入1:")                print(_x1)                print("输入2:")                print(_x2)                print("加法函数: ")                print(sess.run(add, feed_dict={X1: x1, X2: x2}))                y =   sess.run(add, feed_dict={X1: x1, X2: x2})                print(y)                sess.run(optimizer, feed_dict={X: x, Y: y})        training_cost = sess.run(            cost, feed_dict={X: xs, Y: ys})        print(training_cost)        if epoch_i % 20 == 0:            ax.plot(X1, X2, pred.eval(                feed_dict={X1: x1, X2: x2}, session=sess),                    'k', alpha=epoch_i / n_epochs)            fig.show()            plt.draw()        # 如果我们达到了最小值,允许训练退出        if np.abs(prev_training_cost - training_cost) < 0.000001:            break        prev_training_cost = training_cost

回答:

那么你是训练前馈网络还是循环神经网络?

你在RNN()中写的代码让我想起了简单的神经网络(前馈网络)。然而你的标题说你在研究RNN

你可能会发现这个实现很有趣。和你一样,它生成整数向量并使用RNN进行加法

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注