我正在通过研究像MNIST例子这样的例子来学习卷积神经网络.在训练神经网络的过程中,我经常会看到如下输出:
Epoch | Train loss | Valid loss | Train / Val
--------|--------------|--------------|---------------
50 | 0.004756 | 0.007043 | 0.675330
100 | 0.004440 | 0.005321 | 0.834432
250 | 0.003974 | 0.003928 | 1.011598
500 | 0.002574 | 0.002347 | 1.096366
1000 | 0.001861 | 0.001613 | 1.153796
1500 | 0.001558 | 0.001372 | 1.135849
2000 | 0.001409 | 0.001230 | 1.144821
2500 | 0.001295 | 0.001146 | 1.130188
3000 | 0.001195 | 0.001087 | 1.099271
Run Code Online (Sandbox Code Playgroud)
除了时代,有人可以给我一个关于每列代表什么以及这些值意味着什么的解释?我看到了很多关于基本cnn的教程,但我没有遇到过详细解释这个问题的教程.
machine-learning neural-network conv-neural-network recurrent-neural-network
Tensorflow提供了一个不错的LSTM包装器.
rnn_cell.BasicLSTM(num_units, forget_bias=1.0, input_size=None,
state_is_tuple=False, activation=tanh)
Run Code Online (Sandbox Code Playgroud)
我想使用正则化,比如L2正则化.但是,我没有直接访问LSTM单元格中使用的不同权重矩阵,所以我不能明确地做一些像
loss = something + beta * tf.reduce_sum(tf.nn.l2_loss(weights))
Run Code Online (Sandbox Code Playgroud)
有没有办法访问矩阵或使用LSTM以某种方式使用正则化?
我正在使用keras训练RNN,并希望了解验证准确度如何随数据集大小而变化.Keras val_acc在其历史对象中有一个名单,该列表在每个时期之后附加,具有相应的验证集准确性(链接到google组中的帖子).我想获得val_acc运行时期数的平均值,并根据相应的数据集大小进行绘制.
问题:如何检索val_acc列表中的元素并执行类似的操作numpy.mean(val_acc)?
编辑:正如@runDOSrun所说,得到val_accs 的意思是没有意义的.让我专注于进入决赛val_acc.
我尝试了@nemo的建议,但没有运气.这是我打印时得到的
model.fit(X_train, y_train, batch_size = 512, nb_epoch = 5, validation_split = 0.05).__dict__
输出:
{'model': <keras.models.Sequential object at 0x000000001F752A90>, 'params': {'verbose': 1, 'nb_epoch': 5, 'batch_size': 512, 'metrics': ['loss', 'val_loss'], 'nb_sample': 1710, 'do_validation': True}, 'epoch': [0, 1, 2, 3, 4], 'history': {'loss': [0.96936064512408959, 0.66933631673890948, 0.63404161288724303, 0.62268789783555867, 0.60833334699708819], 'val_loss': [0.84040999412536621, 0.75676006078720093, 0.73714292049407959, 0.71032363176345825, 0.71341043710708618]}}
Run Code Online (Sandbox Code Playgroud)
事实证明val_acc,我的历史词典中没有列表.
问题:如何val_acc在history字典中加入?
machine-learning neural-network cross-validation keras recurrent-neural-network
我正在尝试学习如何使用TensorFlow构建用于语音识别的RNN.首先,我想尝试一下TensorFlow页面TF-RNN上的一些示例模型
根据建议,我花了一些时间来理解如何通过word2vec模型代码的基本版本将单词ID嵌入到密集表示(Vector Representation)中.我对tf.nn.embedding_lookup实际做了什么有了解,直到我实际遇到与TF-RNN中的 二维数组一起使用的相同函数ptb_word_lm.py,当它再也没有意义时.
tf.nn.embedding_lookup做了什么:给定一个2-d数组params和一个1-d数组ids,函数tf.nn.embedding_lookup从params中获取行,对应于给定的索引ids,其中包含返回的输出维度.
当尝试使用相同的params和2-d数组时ids,tf.nn.embedding_lookup返回3-d数组,而不是2-d,我不明白为什么.
我查阅了嵌入查找的手册,但我仍然发现很难理解分区是如何工作的,以及返回的结果.我最近尝试了一些简单的例子,tf.nn.embedding_lookup它似乎每次都返回不同的值.这种行为是由于分区涉及的随机性吗?
请帮助我理解它是如何tf.nn.embedding_lookup工作的,以及为什么在两者中使用word2vec_basic.py,ptb_word_lm.py即使用它们的目的是什么?
with tf.variable_scope('forward'):
cell_img_fwd = tf.nn.rnn_cell.GRUCell(hidden_state_size, hidden_state_size)
img_init_state_fwd = rnn_img_mapped[:, 0, :]
img_init_state_fwd = tf.multiply(
img_init_state_fwd,
tf.zeros([batch_size, hidden_state_size]))
rnn_outputs2, final_state2 = tf.nn.dynamic_rnn(
cell_img_fwd,
rnn_img_mapped,
initial_state=img_init_state_fwd,
dtype=tf.float32)
Run Code Online (Sandbox Code Playgroud)
这是我用于输入维度100x196x50的GRU的代码,它应该沿第二维(即196)解压缩.hidden_state_size是50,batch_size是100.但是我收到以下错误:
ValueError: The two structures don't have the same number of elements.
First structure: Tensor("backward/Tile:0", shape=(100, 50), dtype=float32),
second structure:
(<tf.Tensor 'backward/bwd_states/while/GRUCell/add:0' shape=(100, 50) dtype=float32>,
<tf.Tensor 'backward/bwd_states/while/GRUCell/add:0' shape=(100, 50) dtype=float32>).
Run Code Online (Sandbox Code Playgroud)
有任何线索如何解决这个问题?
我有一个时间序列数据集,我用它作为LSTM-RNN的输入,用于行动预期.时间序列包括30fps(即150个数据点)的5秒时间,并且数据表示面部特征的位置/移动.
我从我的数据集中采样较小长度的其他子序列,以便在数据集中添加冗余并减少过度拟合.在这种情况下,我知道子序列的开始和结束帧.
为了批量训练模型,所有时间序列需要具有相同的长度,并且根据文献中的许多论文填充不应该影响网络的性能.
例:
原始序列:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
子序列:
4 5 6 7
8 9 10
2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
考虑到我的网络正在试图预测一个动作(意味着一旦P(动作)>阈值从t = 0变为T = tmax,它将预测该动作)填充的位置是否重要?
选项1:零替换原始值
0 0 0 4 5 6 7 0 0 0
0 0 0 0 0 0 0 8 9 10
0 2 3 4 5 6 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
选项2:最后全部为零
4 5 6 7 0 0 0 0 0 0
8 …Run Code Online (Sandbox Code Playgroud) machine-learning padding deep-learning lstm recurrent-neural-network
在Tensorflow的RNN教程中:https://www.tensorflow.org/tutorials/recurrent .它提到了两个参数:批量大小和时间步长.我对这些概念感到困惑.在我看来,RNN引入批次是因为列车序列可能非常长,使得反向传播不能计算那么长(爆炸/消失的梯度).因此,我们将长列车序列划分为较短的序列,每个序列都是一个小批量,其大小称为"批量大小".我在这儿吗?
关于时间步长,RNN仅由细胞(LSTM或GRU细胞或其他细胞)组成,并且该细胞是连续的.我们可以通过展开来理解顺序概念.但是展开顺序单元是一个概念,而不是真实的,这意味着我们不会以展开的方式实现它.假设列车序列是文本语料库.然后我们每次向RNN小区提供一个单词,然后更新权重.那么为什么我们在这里有时间步骤呢?结合我对上述"批量大小"的理解,我更加困惑.我们是用单词还是多个单词(批量大小)来提供单元格?
我正在尝试解决时间序列预测问题.我尝试使用ANN和LSTM,使用各种参数进行了很多练习,但我能得到的只比持久性预测好8%.
所以我想知道:因为你可以在keras中保存模型; 是否有任何预先训练的模型(LSTM,RNN或任何其他ANN)用于时间序列预测?如果是这样,我怎么得到它们?在Keras有吗?
我的意思是,如果有一个包含经过预先训练的模型的网站,那将非常有用,这样人们就不必花太多时间训练它们.
同样,另一个问题:
是否可以执行以下操作?假设我现在有一个数据集,我用它来训练我的模型.假设在一个月内,我将访问另一个数据集(对应于相同的数据或类似数据,将来可能,但不是唯一的).那么继续训练模型是否可能?与批量培训不同.当您分批进行时,您可以在一瞬间获得所有数据.可能吗?如何?
python machine-learning neural-network keras recurrent-neural-network
我正在通过本教程预测温度来尝试R中的Keras软件包.但是,本教程没有解释如何使用训练有素的RNN模型进行预测,我想知道如何做到这一点.为了训练模型,我使用了从教程中复制的以下代码:
dir.create("~/Downloads/jena_climate", recursive = TRUE)
download.file(
"https://s3.amazonaws.com/keras-datasets/jena_climate_2009_2016.csv.zip",
"~/Downloads/jena_climate/jena_climate_2009_2016.csv.zip"
)
unzip(
"~/Downloads/jena_climate/jena_climate_2009_2016.csv.zip",
exdir = "~/Downloads/jena_climate"
)
library(readr)
data_dir <- "~/Downloads/jena_climate"
fname <- file.path(data_dir, "jena_climate_2009_2016.csv")
data <- read_csv(fname)
data <- data.matrix(data[,-1])
train_data <- data[1:200000,]
mean <- apply(train_data, 2, mean)
std <- apply(train_data, 2, sd)
data <- scale(data, center = mean, scale = std)
generator <- function(data, lookback, delay, min_index, max_index,
shuffle = FALSE, batch_size = 128, step = 6) {
if (is.null(max_index))
max_index <- nrow(data) - delay - 1
i …Run Code Online (Sandbox Code Playgroud) 我在计算神经网络的损失时遇到了问题。我不确定为什么程序需要一个长对象,因为我所有的张量都是浮点形式。我查看了具有类似错误的线程,解决方案是将张量转换为浮点数而不是长整数,但这在我的情况下不起作用,因为我的所有数据在传递到网络时已经是浮点数形式。
这是我的代码:
# Dataloader
from torch.utils.data import Dataset, DataLoader
class LoadInfo(Dataset):
def __init__(self, prediction, indicator):
self.prediction = prediction
self.indicator = indicator
def __len__(self):
return len(self.prediction)
def __getitem__(self, idx):
data = torch.tensor(self.indicator.iloc[idx, :],dtype=torch.float)
data = torch.unsqueeze(data, 0)
label = torch.tensor(self.prediction.iloc[idx, :],dtype=torch.float)
sample = {'data': data, 'label': label}
return sample
# Trainloader
test_train = LoadInfo(train_label, train_indicators)
trainloader = DataLoader(test_train, batch_size=64,shuffle=True, num_workers=1,pin_memory=True)
# The Network
class NetDense2(nn.Module):
def __init__(self):
super(NetDense2, self).__init__()
self.rnn1 = nn.RNN(11, 100, 3)
self.rnn2 = nn.RNN(100, 500, 3)
self.fc1 = …Run Code Online (Sandbox Code Playgroud) python floating-point torch recurrent-neural-network pytorch