Questions tagged «neural-network»

网络结构受到生物神经元(脑细胞)简化模型的启发。神经网络通过有监督和无监督的技术进行训练以“学习”,并可用于解决优化问题,逼近问题,分类模式及其组合。

6
PyTorch-contiguous()
我正在通过github (link)上的LSTM语言模型示例进行研究。对我来说,它的一般功能非常​​清楚。但是我仍在努力理解调用的contiguous()作用,这在代码中多次发生。 例如,在代码的第74/75行中,创建了LSTM的输入和目标序列。数据(存储在中ids)为二维,其中第一维为批处理大小。 for i in range(0, ids.size(1) - seq_length, seq_length): # Get batch inputs and targets inputs = Variable(ids[:, i:i+seq_length]) targets = Variable(ids[:, (i+1):(i+1)+seq_length].contiguous()) 举一个简单的例子,当使用批处理大小1和seq_length10时inputs,targets如下所示: inputs Variable containing: 0 1 2 3 4 5 6 7 8 9 [torch.LongTensor of size 1x10] targets Variable containing: 1 2 3 4 …

5
训练期间难治的常见原因
我注意到在培训期间经常发生这种情况NAN。 通常,它似乎是通过权重引入内部产品/完全连接或卷积层中的。 这是因为梯度计算正在爆炸吗?还是因为权重初始化(如果是这样,为什么权重初始化会产生这种效果)?还是可能是由于输入数据的性质引起的? 这里的首要问题很简单:在训练过程中发生NAN的最常见原因是什么?其次,有什么方法可以解决这个问题(为什么它们起作用)?

2
如何在TensorFlow中选择交叉熵损失?
分类问题(例如逻辑回归或多项式逻辑回归)可优化交叉熵损失。通常,交叉熵层跟随softmax层,从而产生概率分布。 在张量流中,至少有十二种不同的交叉熵损失函数: tf.losses.softmax_cross_entropy tf.losses.sparse_softmax_cross_entropy tf.losses.sigmoid_cross_entropy tf.contrib.losses.softmax_cross_entropy tf.contrib.losses.sigmoid_cross_entropy tf.nn.softmax_cross_entropy_with_logits tf.nn.sigmoid_cross_entropy_with_logits ... 哪一个仅适用于二进制分类,哪些适合于多类问题?什么时候应该sigmoid代替使用softmax?如何在sparse功能与别人不同,为什么仅是它softmax? 相关(更多面向数学的讨论):Keras和TensorFlow中所有这些交叉熵损失之间有什么区别?。

7
如何根据损失值告诉Keras停止训练?
目前,我使用以下代码: callbacks = [ EarlyStopping(monitor='val_loss', patience=2, verbose=0), ModelCheckpoint(kfold_weights_path, monitor='val_loss', save_best_only=True, verbose=0), ] model.fit(X_train.astype('float32'), Y_train, batch_size=batch_size, nb_epoch=nb_epoch, shuffle=True, verbose=1, validation_data=(X_valid, Y_valid), callbacks=callbacks) 它告诉Keras,如果损失在2个时期内没有改善,就停止训练。但是我要在损失小于某个恒定的“ THR”后停止训练: if val_loss < THR: break 我已经在文档中看到有可能进行自己的回调:http : //keras.io/callbacks/ 但没有发现如何停止训练过程。我需要个建议。

1
在Keras中,TimeDistributed层的作用是什么?
我试图了解TimeDistributed包装器在Keras中的作用。 我得到了TimeDistributed“将层应用于输入的每个时间片”。 但是我做了一些实验,却得到了我无法理解的结果。 简而言之,对于LSTM层,TimeDistributed和Just Dense层的结果相同。 model = Sequential() model.add(LSTM(5, input_shape = (10, 20), return_sequences = True)) model.add(TimeDistributed(Dense(1))) print(model.output_shape) model = Sequential() model.add(LSTM(5, input_shape = (10, 20), return_sequences = True)) model.add((Dense(1))) print(model.output_shape) 对于这两个模型,我得到的输出形状为(None,10,1)。 在RNN层之后,谁能解释TimeDistributed和Dense层之间的区别?

4
我们应该为亚当优化器做学习率衰减吗
我正在使用Adam优化器训练一个用于图像定位的网络,有人建议我使用指数衰减。我不想尝试,因为Adam优化器本身会降低学习速度。但是那个家伙坚持说,他说他以前做过。所以我应该这样做,您的建议背后是否有任何理论依据?


3
估计人工神经网络的神经元数量和层数[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在寻找一种有关如何计算层数和每层神经元数的方法。作为输入,我只有输入向量的大小,输出向量的大小和训练集的大小。 通常,最好的网络是通过尝试不同的网络拓扑并选择误差最小的网络来确定的。不幸的是我不能那样做。


18
训练回归网络时NaN损失
我有一个“一键编码”(全1和全0)的数据矩阵,具有260,000行和35列。我正在使用Keras训练简单的神经网络来预测连续变量。组成网络的代码如下: model = Sequential() model.add(Dense(1024, input_shape=(n_train,))) model.add(Activation('relu')) model.add(Dropout(0.1)) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.1)) model.add(Dense(256)) model.add(Activation('relu')) model.add(Dropout(0.1)) model.add(Dense(1)) sgd = SGD(lr=0.01, nesterov=True); #rms = RMSprop() #model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) model.compile(loss='mean_absolute_error', optimizer=sgd) model.fit(X_train, Y_train, batch_size=32, nb_epoch=3, verbose=1, validation_data=(X_test,Y_test), callbacks=[EarlyStopping(monitor='val_loss', patience=4)] ) 但是,在训练过程中,我看到损失下降得很好,但是在第二个时期的中间,它就变成了nan: Train on 260000 samples, validate on 64905 samples Epoch 1/3 260000/260000 [==============================] - …



6
为什么神经网络会根据自己的训练数据预测错误?
的恩惠到期在19小时。这个问题的答案有资格获得+150声望奖励。 sirjay正在寻找信誉良好的答案。 我制作了带有监督学习的LSTM(RNN)神经网络,用于数据库存预测。问题是为什么它会根据自己的训练数据预测错误?(注意:可复制的示例以下可) 我创建了一个简单的模型来预测未来5天的股价: model = Sequential() model.add(LSTM(32, activation='sigmoid', input_shape=(x_train.shape[1], x_train.shape[2]))) model.add(Dense(y_train.shape[1])) model.compile(optimizer='adam', loss='mse') es = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True) model.fit(x_train, y_train, batch_size=64, epochs=25, validation_data=(x_test, y_test), callbacks=[es]) 正确的结果以y_test(5个值)表示,因此对模型进行训练,可以回顾90天的前几天,然后使用以下方法从最佳(val_loss=0.0030)结果中恢复权重patience=3: Train on 396 samples, validate on 1 samples Epoch 1/25 396/396 [==============================] - 1s 2ms/step - loss: 0.1322 - val_loss: 0.0299 Epoch 2/25 …

2
最大化Keras模型的MSE
我有一个生成式对抗网络,其中通过MSE使鉴别器最小化,并且使生成器最大化。因为两者都是追求相反目标的对手。 generator = Sequential() generator.add(Dense(units=50, activation='sigmoid', input_shape=(15,))) generator.add(Dense(units=1, activation='sigmoid')) generator.compile(loss='mse', optimizer='adam') generator.train_on_batch(x_data, y_data) 为了获得可以从高MSE值中获利的生成器模型,我必须适应什么?

2
pytorch模型中的参数如何不出现在计算图中?
我正在尝试更新/更改神经网络模型的参数,然后使更新的神经网络的正向传递在计算图中(无论我们进行了多少更改/更新)。 我尝试了这个想法,但是每当我这样做时,pytorch都会将更新的张量(在模型内部)设置为叶子,这会终止渐变流到我要接收渐变的网络。它杀死了梯度流,因为叶子节点不是我希望它们成为计算图形的一部分(因为它们不是真正的叶子)。 我已经尝试了多种方法,但似乎没有任何效果。我创建了一个自包含的虚拟代码,该代码打印了我希望具有渐变的网络的渐变: import torch import torch.nn as nn import copy from collections import OrderedDict # img = torch.randn([8,3,32,32]) # targets = torch.LongTensor([1, 2, 0, 6, 2, 9, 4, 9]) # img = torch.randn([1,3,32,32]) # targets = torch.LongTensor([1]) x = torch.randn(1) target = 12.0*x**2 criterion = nn.CrossEntropyLoss() #loss_net = nn.Sequential(OrderedDict([('conv0',nn.Conv2d(in_channels=3,out_channels=10,kernel_size=32))])) …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.