使用RNN进行手写数字识别,为什么正确率总是无法提高

我使用最简单RNN进行mnist手写数字的识别,为什么交叉商总是无法降低呢。完整代码如下。

import tensorflow as tf

from tensorflow.contrib.layers import fully_connected
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('/home/as/mnist_dataset', one_hot=True)
n_steps = 28
n_inputs = 28
n_neurons = 100
x = tf.placeholder(tf.float32,[None,n_steps,n_inputs])
action_one_hot = tf.placeholder(tf.float32,[None,10])

basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)
output_seqs, states = tf.nn.dynamic_rnn(basic_cell,x,dtype=tf.float32)
y0 = fully_connected(states,100,activation_fn=tf.nn.relu)
y = fully_connected(y0,10)
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(labels=action_one_hot, logits=y)
mean_loss = tf.reduce_mean(cross_entropy)
trian_op = tf.train.AdamOptimizer(0.001).minimize(mean_loss)

with tf.Session() as sess:
    for i in range(10000):
        sess.run(tf.global_variables_initializer())
        x1,y1 = mnist.train.next_batch(1000)
        x1 = x1.reshape((-1,n_steps,n_inputs))
        sess.run(trian_op,feed_dict={x:x1,action_one_hot:y1})
        if i%200==0:
            print(sess.run(mean_loss,feed_dict={x:x1,action_one_hot:y1}))

就是在每200步输出一下交叉商,但是这个交叉商总是无法下降。

1个回答

RNN做文字识别没有什么优势,建议你用CNN。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 或者是overfit/underfit,然后调整下神经元数目
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_34644971: 你加上summary用tensor board看下,是不是梯度消失了。
一年多之前 回复
qq_34644971
qq_34644971 你好,我知道用cnn作图像比较好,但是我现在在学习rnn,所以我想用rnn作这个。你知道为什么我的代码效果不好呢?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
手写数字识别,神经网络交叉商结果正确,正确率总是不变

我遇到的问题是,经过训练,测试集的交叉商下降非常快,但是正确率总是不变,真是想不到为什么 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np from tensorflow.contrib.layers import fully_connected from tensorflow.examples.tutorials.mnist import input_data x = tf.placeholder(dtype=tf.float32,shape=[None,784]) y = tf.placeholder(dtype=tf.float32,shape=[None,10]) test_x = tf.placeholder(dtype=tf.float32,shape=[None,784]) test_y = tf.placeholder(dtype=tf.float32,shape=[None,10]) mnist = input_data.read_data_sets("/home/xuenzhu/mnist_data", one_hot=True) hidden1 = fully_connected(x,100,activation_fn=tf.nn.relu, weights_initializer=tf.random_normal_initializer()) hidden2 = fully_connected(hidden1,100,activation_fn=tf.nn.relu, weights_initializer=tf.random_normal_initializer()) outputs = fully_connected(hidden2,10,activation_fn=tf.nn.relu, weights_initializer=tf.random_normal_initializer()) loss = tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=outputs) reduce_mean_loss = tf.reduce_mean(loss) equal_result = tf.equal(tf.argmax(outputs,1),tf.argmax(y,1)) cast_result = tf.cast(equal_result,dtype=tf.float32) accuracy = tf.reduce_mean(cast_result) train_op = tf.train.AdamOptimizer(0.001).minimize(reduce_mean_loss) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})) for i in range(10000): xs,ys = mnist.train.next_batch(100) sess.run(train_op,feed_dict={x:xs,y:ys}) if i%100==0: print(sess.run(reduce_mean_loss,feed_dict={x:mnist.test.images,y:mnist.test.labels})) print(sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels}))

使用RNN识别语音数据的反向传播问题

在使用RNN处理声音的实验中,我将声音数据以1000为单位划分成了多个样本,每一次的rnn循环读取样本中的一个数据,因此前向传播的次数应该是1000次。在所有的前向传播结束之后应该会得到1000个结果,对1000个结果取平均后(做mean pooling处理),经过sigmod函数得到分类的预测结果,此时和正确结果相见可以得到此次训练的误差,但得到误差之后我怎么返回进行反向传播对我原来的权值进行更新呢?是每一层都根据正确的分类结果(0或1)计算一次误差,还是同时使用相同的误差来进行计算呢?

使用tensorflow完成手写英文字母识别,有偿!

全连接网络,CNN RNN LSTM等技术都可以!只要能识别,不用tensorflow都可以!求!!

RNN循环神经网络的输入数据问题

最近在研究在Tensorflow环境下RNN循环神经网络的使用,但还是没有弄明白RNN的输入数据是应该怎么准备?比如现在有3种大量的语音信号原始数据,还未经过处理的,分别由3类情感(高兴,伤心,愤怒)组成,现在想使用RNN进行3分类,将这些语音数据代表的情感区分出来,那么应该对这些语音数据做怎样的处理?标签应该如何添加?才能在RNN中完成训练并成功分类呢?十分感谢!

python中RNN处理序列时输入与标签的格式问题

![图片说明](https://img-ask.csdn.net/upload/202004/11/1586610565_74161.png) 想使用自己收集的数据训练RNN,输入数据对应的是202个句子,每个句子包含30个词,每个词的向量维度是2048.也就是如图所示的(202,30,2048) 在创建对应的标签的时候想的是对应这202个句子每个词都有对应的输出标签,标签的维度是8,所以设计了格式是(202,30,8) 在训练的时候为什么在model.fit的时候会出现错误提示 when checking target: expected dense_2 to have 2 dimensions, but got array with shape (202, 30, 8) 按我的理解RNN的输入是一次性输入30个词语,对应的标签应该有30个8维向量,整个合集就是(202, 30, 8),为什么keras在fit的时候会显示以上的错误提示呢?

小白的提问..用RNN做MNIST怎么测试test_data上的准确率

看的莫烦的教学视频,有一节他用RNN做了MNIST的练习,输出的accuracy只是在训练数据上的,我想测试一下在测试数据集上的accuracy,但是不知道怎么变换数据的格式... 纯属小白一个,还望大神看一眼我的问题啊 代码是这个样子的 ``` import tensorflow as tf import input_data #this is data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) #hyperparameters learning_rate=0.001 training_iters=100000 batch_size=128 n_inputs=28 #data shape 28列,rnn做分成一个序列一个序列的 n_steps=28 #time steps 28行 n_hidden_unis=128 #neurons in hidden layer n_classes=10 #classes 10 #tf Graph input x = tf.placeholder("float", shape=[None, n_steps, n_inputs]) y = tf.placeholder("float", shape=[None, n_classes]) #Define weights weights={ 'in':tf.Variable(tf.random_normal([n_inputs,n_hidden_unis])), 'out':tf.Variable(tf.random_normal([n_hidden_unis,n_classes])) } biases={ 'in':tf.Variable(tf.constant(0.1,shape=[n_hidden_unis,])), 'out':tf.Variable(tf.constant(0.1,shape=[n_classes,])), } def RNN(X,weights,biases): ####hidden layer for input to cell##### # X(128batch,28steps,28inputs) ==> (128*28, 28inputs) print(X) X= tf.reshape(X,[-1,n_inputs]) print(X) # X_in ==>(128batch*28steps,28hidden) X_in= tf.matmul(X, weights['in'])+biases['in'] print(X_in) # X_in ==>(128batch,28steps,28hidden) X_in= tf.reshape(X_in,[-1, n_steps, n_hidden_unis]) print(X_in) ####cell##### lstm_cell= tf.nn.rnn_cell.BasicLSTMCell(n_hidden_unis, forget_bias=1.0, state_is_tuple=True) #cell fi divided into two parts(c_state, m_state) _init_state= lstm_cell.zero_state(batch_size,dtype="float") print(_init_state) outputs,states=tf.nn.dynamic_rnn(lstm_cell,X_in ,initial_state=_init_state,time_major=False) print(outputs,states) ####hidden layer for output as final results##### results=tf.matmul(states[1],weights['out'])+biases['out'] print(results) return results pred= RNN(x, weights, biases) cost= tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))#logits=最后一层的输出,label train_op=tf.train.AdamOptimizer(learning_rate).minimize(cost) correct_pred=tf.equal(tf.argmax(pred,1),tf.argmax(y,1)) accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32)) init= tf.initialize_all_variables() sess=tf.Session() sess.run(init) step=0 while step*batch_size<training_iters: batch_xs,batch_ys= mnist.train.next_batch(batch_size) batch_xs=batch_xs.reshape(batch_size,n_steps,n_inputs) sess.run([train_op],feed_dict={ x:batch_xs, y:batch_ys}) if step%20==0: print(sess.run(accuracy,feed_dict={ x:batch_xs, y:batch_ys})) step=step+1 ```

关于RNN的一些细节问题?

有两个问题: 1.RNN的dropout在一个序列的每个时间step是固定的还是变化的? 2.embedding将onehot向量转化为稠密向量,这个过程为啥要+1如下所示 ``` embedding = tf.get_variable("embedding", [len(words)+1, rnn_size]) inputs = tf.nn.embedding_lookup(embedding, input_data) ``` vocab_len = len(word_to_index) + 1 # adding 1 to fit Keras embedding (requirement) emb_dim = word_to_vec_map["cucumber"].shape[0] # define dimensionality of your GloVe word vectors (= 50) ``` ```

如何用GPU优化RNN(lstm)网络计算

具体来说就是用cuda去优化RNN,CPU算的太慢了,但是不想用TensorFlow等框架。 求大神!!!

tensorflow RNN LSTM代码运行不正确?

报错显示是ValueError: None values not supported. 在cross_entropy处有问题。谢谢大家 ``` #7.2 RNN import tensorflow as tf #tf.reset_default_graph() from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist = input_data.read_data_sets("MNIST_data/", one_hot = True) #输入图片是28*28 n_inputs = 28 #输入一行,一行有28个数据 max_time = 28 #一共28行 lstm_size = 100 #隐层单元 n_classes = 10 #10个分量 batch_size = 50 #每批次50个样本 n_batch = mnist.train.num_examples//batch_size #计算共由多少个批次 #这里的none表示第一个维度可以是任意长度 x = tf.placeholder(tf.float32, [batch_size, 784]) #正确的标签 y = tf.placeholder(tf.float32, [batch_size, 10]) #初始化权值 weights = tf.Variable(tf.truncated_normal([lstm_size, n_classes], stddev = 0.1)) #初始化偏置 biases = tf.Variable(tf.constant(0.1, shape = [n_classes])) #定义RNN网络 def RNN(X, weights, biases): #input = [batch_size, max_size, n_inputs] inputs = tf.reshape(X, [-1, max_time, n_inputs]) #定义LSTM基本CELL lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(lstm_size) #final_state[0]是cell_state #final_state[1]是hidden_state outputs, final_state = tf.nn.dynamic_rnn(lstm_cell, inputs, dtype = tf.float32) results = tf.nn.softmax(tf.matmul(final_state[1], weights) + biases) #计算RNN的返回结果 prediction = RNN(x, weights, biases) #损失函数 cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels = y,logits = prediction)) #使用AdamOptimizer进行优化 train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) #结果存放在一个布尔型列表中 correct_prediction = tf.equal(tf.argmax(y, 1),tf.argmax(prediction, 1)) #求准确率 accuracy = tf.reduce_mean(tf.cast(correct_precdition,tf.float32)) #初始化 init = tf.global_variable_initializer() with tf.Session() as sess: sess.run(init) for epoch in range(6): for batch in range(n_batch): batch_xs,batch_ys=mnist.train.next_batch(batch_size) sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys}) acc = sess.run(accuracy, feed_dict={x:mnist.test.images,y:mnist.test.labels}) print('Iter' + str(epoch) + ',Testing Accuracy = ' + str(acc)) ```

tensorflow RNN模型中只使用了一组输出参数?

# -*- coding: utf-8 -*- """ Created on Thu Jan 11 08:56:10 2018 @author: Administrator """ from tensorflow.contrib import rnn import numpy as np import tensorflow as tf c=np.load('C:/Users/Administrator/Desktop/jm00train.npy') d=np.load('C:/Users/Administrator/Desktop/jm00label.npy') jm00train=c[:140000] jm00test=c[140000:] c=np.float32(c) jm00trainlabel=d[:140000] jm00trainlabelonehot=tf.one_hot(jm00trainlabel,7) jm00testlabel=d[140000:] jm00testlabelonehot=tf.one_hot(jm00testlabel,7) n_inputs=38 max_time=50 lstm_size=20 n_classes=7 #batch_size=1 #n_batch= x=tf.placeholder(tf.float32,[None,50,38]) y=tf.placeholder(tf.float32,[None,7]) weights = tf.Variable(tf.truncated_normal([lstm_size, n_classes], stddev=0.1)) #初始化偏置值 biases = tf.Variable(tf.constant(0.1, shape=[n_classes])) #定义RNN网络 def RNN(X,weights,biases): # inputs=[batch_size, max_time, n_inputs] inputs = tf.reshape(X,[-1,max_time,n_inputs]) #定义LSTM基本CELL lstm_cell = rnn.BasicLSTMCell(lstm_size) # final_state[0]是cell state # final_state[1]是hidden_state outputs,final_state = tf.nn.dynamic_rnn(lstm_cell,inputs,dtype=tf.float32) results = tf.nn.softmax(tf.matmul(final_state[1],weights) + biases) return results #计算RNN的返回结果 prediction= RNN(x, weights, biases) #损失函数 cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction,labels=y)) #使用AdamOptimizer进行优化 train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) #结果存放在一个布尔型列表中 correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))#argmax返回一维张量中最大的值所在的位置 #求准确率 accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32)#把correct_prediction变为float32类型 #初始化 #init= #init = tf.global_variables_initializer() #init=tf.global_variables_initializer() init=tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) sess.run(train_step,feed_dict={x:jm00train,y:jm00trainlabel}) acc = sess.run(accuracy,feed_dict={x:jm00test,y:jm00testlabelonehot}) print ("Iter " + ", Testing Accuracy= " + str(acc))

RNN 递归神经网络预测人脸

我用RNN 神经网络预测不同人的人脸,可是这些人的结果是一样的。我不知道错误在哪,希望大家提供想法,想说什么说什么~~谢谢。

如何处理RNN的可变输入?

求解答,我用word2vec词训练成词向量后,句子变成了一组向量,然后我想把这些向量作为RNN的输入(基于theano的lasagne实现),但是现在遇到的问题是每个句子的词数不一样,也就是输入句子长度可变,这个时候该怎么处理呢?

深度学习的人体目标识别跟踪

要做一个使用深度学习来实现人体目标识别跟踪的毕业设计,本人菜鸟一枚,不知如何下手,就是用faster rcnn 的demo 实现分类以后该怎么应用到视频里呢实现跟踪呢求大神指教

求告知,我在跑GitHub上面的一个RNN程序时提示这个,有没有人知道是那里出了问题呢?

我的电脑和环境: MacBook Air;python3.6;tensorflow1.1.0 错误提示: ValueError: Attempt to reuse RNNCell <tensorflow.contrib.rnn.python.ops.core_rnn_cell_impl.BasicLSTMCell object at 0x107ecc400> with a different variable scope than its first use. First use of cell was with scope 'rnn/multi_rnn_cell/cell_0/basic_lstm_cell', this attempt is with scope 'rnn/multi_rnn_cell/cell_1/basic_lstm_cell'. Please create a new instance of the cell if you would like it to use a different set of weights. If before you were using: MultiRNNCell([BasicLSTMCell(...)] * num_layers), change to: MultiRNNCell([BasicLSTMCell(...) for _ in range(num_layers)]). If before you were using the same cell instance as both the forward and reverse cell of a bidirectional RNN, simply create two instances (one for forward, one for reverse). In May 2017, we will start transitioning this cell's behavior to use existing stored weights, if any, when it is called with scope=None (which can lead to silent model degradation, so this error will remain until then.)

如何提取RNN网络的网络参数?

```Python新手,最近在学习DQN算法与RNN网络结合的DRQN。 python中如何将评估网络中的RNN网络参数传递到目标网络RNN中去? 附上莫凡的全联通网络的参数传递代码: # 替换 target net 的参数 t_params = tf.get_collection('target_net_params') # 提取 target_net 的参数 e_params = tf.get_collection('eval_net_params') # 提取 eval_net 的参数 self.replace_target_op = [tf.assign(t, e) for t, e in zip(t_params, e_params)] # 更新 target_net 参数 self.sess = tf.Session() self.sess.run(tf.global_variables_initializer()) self.cost_his = [] # 记录所有 cost 变化, 用于最后 plot 出来观看 def _build_net(self): # -------------- 创建 eval 神经网络, 及时提升参数 -------------- self.s = tf.placeholder(tf.float32, [None, self.n_features], name='s') # 态势s占位符,6维 self.q_target = tf.placeholder(tf.float32, [None, self.n_actions], name='Q_target') # q_target占位符,9维值函数 with tf.variable_scope('eval_net'): # c_names(collections_names) 是在更新 target_net 参数时会用到 c_names, n_l1, w_initializer, b_initializer = \ ['eval_net_params', tf.GraphKeys.GLOBAL_VARIABLES], 10, \ tf.random_normal_initializer(0., 0.3), tf.constant_initializer(0.1) # 10个神经元,[6,10] # eval_net 的第一层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l1'): w1 = tf.get_variable('w1', [self.n_features, n_l1], initializer=w_initializer, collections=c_names)#[6,10] b1 = tf.get_variable('b1', [1, n_l1], initializer=b_initializer, collections=c_names) l1 = tf.nn.relu(tf.matmul(self.s, w1) + b1) # eval_net 的输出层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l2'): w2 = tf.get_variable('w2', [n_l1, self.n_actions], initializer=w_initializer, collections=c_names)#[10,9] b2 = tf.get_variable('b2', [1, self.n_actions], initializer=b_initializer, collections=c_names) self.q_eval = tf.matmul(l1, w2) + b2 with tf.variable_scope('loss'): # 求误差 self.loss = tf.reduce_mean(tf.squared_difference(self.q_target, self.q_eval)) with tf.variable_scope('train'): # 梯度下降 self._train_op = tf.train.RMSPropOptimizer(self.lr).minimize(self.loss) #self._train_op =tf.train.GradientDescentOptimizer(self.lr).minimize(self.loss) #self._train_op =tf.train.AdamOptimizer(self.lr).minimize(self.loss) # ---------------- 创建 target 神经网络, 提供 target Q --------------------- self.s_ = tf.placeholder(tf.float32, [None, self.n_features], name='s_') # 接收下个 observation (下一个输入) with tf.variable_scope('target_net'): # c_names(collections_names) 是在更新 target_net 参数时会用到 c_names = ['target_net_params', tf.GraphKeys.GLOBAL_VARIABLES] # target_net 的第一层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l1'): w1 = tf.get_variable('w1', [self.n_features, n_l1], initializer=w_initializer, collections=c_names) b1 = tf.get_variable('b1', [1, n_l1], initializer=b_initializer, collections=c_names) l1 = tf.nn.relu(tf.matmul(self.s_, w1) + b1) # target_net 的第二层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l2'): w2 = tf.get_variable('w2', [n_l1, self.n_actions], initializer=w_initializer, collections=c_names) b2 = tf.get_variable('b2', [1, self.n_actions], initializer=b_initializer, collections=c_names) self.q_next = tf.matmul(l1, w2) + b2 请大佬讲解RNN参数传递时也尽可能有代码演示谢谢!!!

keras下用RNN中的lstm来进行图片分类,输入维数的错误

1.如题,我是在keras下用lstm来对本地文件夹中六类垃圾进行图片分类 这是我的部分代码: (我本地的图片是512 ✖384的,进行resize为200✖160了) ``` nb_lstm_outputs = 128 #神经元个数 nb_time_steps = 200 #时间序列长度 nb_input_vector = 160 #输入序列 # 读取数据和标签 print("------开始读取数据------") data = [] labels = [] # 拿到图像数据路径,方便后续读取 imagePaths = sorted(list(utils_paths.list_images('./dataset-resized'))) random.seed(42) random.shuffle(imagePaths) # 遍历读取数据 for imagePath in imagePaths: # 读取图像数据 image = cv2.imread(imagePath) image = cv2.resize(image, (160,200)) data.append(image) # 读取标签 label = imagePath.split(os.path.sep)[-2] labels.append(label) # 对图像数据做scale操作 data=np.array(data, dtype="float") / 255.0 labels = np.array(labels) # 数据集切分 (trainX, testX, trainY, testY) = train_test_split(data,labels, test_size=0.25, random_state=42) # 转换标签为one-hot encoding格式 lb = LabelBinarizer() trainY = lb.fit_transform(trainY) testY = lb.transform(testY) # 设置初始化超参数 EPOCHS = 5 BS = 71 ``` 以上就是我的数据预处理操作 下面是我构建的模型: ``` model = Sequential() model.add(LSTM(units=nb_lstm_outputs, return_sequences=True, input_shape=(nb_time_steps, nb_input_vector))) # returns a sequence of vectors of dimension 30 model.add(LSTM(units=nb_lstm_outputs, return_sequences=True)) # returns a sequence of vectors of dimension 30 model.add(LSTM(units=nb_lstm_outputs)) # return a single vector of dimension 30 model.add(Dense(1, activation='softmax')) model.add(Dense(6, activation='softmax')) adam=Adam(lr=1e-4) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(trainX, trainY, epochs = EPOCHS, batch_size = BS, verbose = 1, validation_data = (testX,testY)) ``` 后续就是优化和生成loss等的代码了。 然而运行时遇到了以下维度错误: ![图片说明](https://img-ask.csdn.net/upload/202004/26/1587884348_141131.png) 然后我我试着修改不同的尺寸,发现都有上述错误,感觉应该是维度错误,但是不太明白1895是怎么来的? 2.遇到上述维度问题后,不太清楚怎么解决,于是我将代码中读取图片cv2.imread,将图像进行了灰度化: ``` image = cv2.imread(imagePath,CV2.IMREAD_GRAYSCALE) ``` 调整后,代码可以运行,然而并未按照预先设定的Batchsize进行训练,而是直接以划分的整体比例进行训练,想请问下这是怎么回事?已经输入BS到batch_size的参数了 ![图片说明](https://img-ask.csdn.net/upload/202004/26/1587884791_796238.png) 所以想请问各位大神,怎么解决维度问题,还有就是为什么后面BS传进去不管用啊,有没有清楚怎么一回事的啊? 谢谢各位大神了!!是个小白QAQ谢谢!

是否可以使用FANN制作RNN

<div class="post-text" itemprop="text"> <p>Im playing with PHP-CLI and MQL4. I want to create a neural network for FOREX predictions.</p> <p>Is it possible to make a recurrent neural network (RNN) with gated recurring units (GRU) or long short-term memory (LTSM) using FANN library?</p> </div>

LSTM/RNN 中的time_step到底如何设置?

新手尝试用LSTM进行字段分类, 数据集如下 ``` Data ----- Label DKWL----0 FCHN----0 KDQP----0 IHGS----1 .... ``` 然后我进行了编码: ``` 00011101000001000111-----1 ..... shape:(N,20) ``` 接下来 我建造了网络: ``` class RNN(nn.Module): def __init__(self): super(RNN, self).__init__() self.rnn = nn.LSTM( input_size=20, # 每个sample有20个feature hidden_size=64, num_layers=1, batch_first=True, ) self.out = nn.Linear(64, 2) # 2分类问题,所以output设置成了2 def forward(self, x): r_out, (h_n, h_c) = self.rnn(x, None) out = self.out(r_out[:, -1, :]) return out ``` 最后开始训练: ``` for epoch in range(EPOCH): for step, (x, b_y) in enumerate(train_loader): # gives batch data b_x = x.view(-1, ?, ?) #这里的reshape我应该设置为多少? 按照教程,应该设置为(batch, time_step, input_size)的形式,因为我想让网络记住每个sample的feature的sequence,所以我把time_step设置成了20(一个sample有20个featur,最后我得到了(-1,20,20),但是会报错,然后我又改成了(-1,1,20), 这就没问题了,但是改成这样,是不是就没有记住feature的sequence? output = rnn(b_x) loss = loss_func(output, b_y) optimizer.zero_grad() loss.backward() optimizer.step() ```

RNN 展开实现LSTM按时间步迭代时,有必要令reuse=true么

我看到很多样例代码中, 展开实现LSTM按时间步迭代时,都如下加上了一句 if timestep > 0: tf.get_variable_scope().reuse_variables() ``` with tf.variable_scope('RNN'): for timestep in range(timestep_size): if timestep > 0: tf.get_variable_scope().reuse_variables() # 这里的state保存了每一层 LSTM 的状态 (cell_output, state) = mlstm_cell(X[:, timestep, :], state) ``` 我查了各类RNNCELL类的源代码,发现除了call函数外,还有build函数(此函数似乎是在创建所有的变量),且此函数只调用一次,并且是在call调用之前调用,并且查看源码注释时发现是这样写的: For backwards compatibility purposes, most RNNCell instances allow their call methods to instantiate variables via tf.get_variable. The underlying variable scope thus keeps track of any variables, and returning cached versions. This is atypical of tf.layer objects, which separate this part of layer building into a build method that is only called once. Here we provide a subclass for RNNCell objects that act exactly as Layer objects do. They must provide a build method and their call methods do not access Variables tf.get_variable 所以我个人认为这句不需要加,求各位帮忙解答下,该不该加这句话

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

广工操作系统课程设计(文档+代码+可执行文件)

实现作业调度(先来先服务)、进程调度功能(时间片轮转) 实现内存管理功能(连续分配)。 实现文件系统功能(选作) 这些功能要有机地连接起来

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

apache-jmeter-5.1.1(Requires Java 8+).zip

。Apache JMeter 5.1.1 (Requires Java 8+),需要jdk8以上的版本。

数通HCNP中文理论全套教材.rar

内涵HCNP-IENP中文理论书-内文,

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

DDR5_Draft_Spec_Rev05c.pdf

DDR5 spec

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

前言: 说在前面, 面试题是根据一些朋友去面试提供的,再就是从网上整理了一些。 先更新50道,下一波吧后面的也更出来。 求赞求关注!! 废话也不多说,现在就来看看有哪些面试题 1、面向对象的特点有哪些? 抽象、继承、封装、多态。 2、接口和抽象类有什么联系和区别? 3、重载和重写有什么区别? 4、java有哪些基本数据类型? 5、数组有没有length()方法?String有没有length()方法? 数组没有length()方法,它有length属性。 String有length()方法。 集合求长度用

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问