我刚刚使用Keras构建了我的第一个模型,这是输出.它看起来像是在构建任何Keras人工神经网络后获得的标准输出.即使在查看文档后,我也不完全了解时代是什么以及输出中打印的内容是什么.
什么是Keras的时代和损失?
(我知道这可能是一个非常基本的问题,但我似乎无法在网上找到答案,如果答案真的很难从文档中收集,我认为其他人会有同样的问题,因此决定在这里发布.)
Epoch 1/20
1213/1213 [==============================] - 0s - loss: 0.1760
Epoch 2/20
1213/1213 [==============================] - 0s - loss: 0.1840
Epoch 3/20
1213/1213 [==============================] - 0s - loss: 0.1816
Epoch 4/20
1213/1213 [==============================] - 0s - loss: 0.1915
Epoch 5/20
1213/1213 [==============================] - 0s - loss: 0.1928
Epoch 6/20
1213/1213 [==============================] - 0s - loss: 0.1964
Epoch 7/20
1213/1213 [==============================] - 0s - loss: 0.1948
Epoch 8/20
1213/1213 [==============================] - 0s - loss: 0.1971
Epoch 9/20
1213/1213 [==============================] - …Run Code Online (Sandbox Code Playgroud) 使用Anaconda Python 2.7 Windows 10.
我正在使用Keras exmaple训练语言模型:
print('Build model...')
model = Sequential()
model.add(GRU(512, return_sequences=True, input_shape=(maxlen, len(chars))))
model.add(Dropout(0.2))
model.add(GRU(512, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(len(chars)))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
def sample(a, temperature=1.0):
# helper function to sample an index from a probability array
a = np.log(a) / temperature
a = np.exp(a) / np.sum(np.exp(a))
return np.argmax(np.random.multinomial(1, a, 1))
# train the model, output generated text after each iteration
for iteration in range(1, 3):
print()
print('-' * 50)
print('Iteration', iteration)
model.fit(X, y, batch_size=128, nb_epoch=1)
start_index = random.randint(0, …Run Code Online (Sandbox Code Playgroud) 我迷失在scikit learn 0.18用户手册中(http://scikit-learn.org/dev/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier):
hidden_layer_sizes : tuple, length = n_layers - 2, default (100,)
The ith element represents the number of neurons in the ith hidden layer.
Run Code Online (Sandbox Code Playgroud)
如果我在模型中只找到1个隐藏层和7个隐藏单位,我应该这样放吗?谢谢!
hidden_layer_sizes=(7, 1)
Run Code Online (Sandbox Code Playgroud) 在Keras,我们可以将输出返回model.fit到历史记录,如下所示:
history = model.fit(X_train, y_train,
batch_size=batch_size,
nb_epoch=nb_epoch,
validation_data=(X_test, y_test))
Run Code Online (Sandbox Code Playgroud)
现在,如何将历史记录保存到文件中以供进一步使用(例如,绘制针对时期的acc或loss的绘制图)?
我知道批量标准化通过将激活转向单位高斯分布,从而有助于更快的训练,从而解决消失的梯度问题.批量标准行为在训练时使用不同(使用每批的平均值/ var)和测试时间(使用训练阶段的最终运行平均值/ var).
另一方面,实例规范化作为对比度规范化,如本文中提到的https://arxiv.org/abs/1607.08022.作者提到输出风格化图像应该不依赖于输入内容图像的对比度,因此实例规范化有所帮助.
但是,我们不应该使用实例规范化进行图像分类,其中类标签不应该依赖于输入图像的对比度.我还没有看到任何使用实例规范化的纸张来进行批量归一化以进行分类.这是什么原因?此外,可以并且应该一起使用批处理和实例规范化.我渴望在何时使用哪种规范化方面获得直观和理论上的理解.
machine-learning computer-vision neural-network conv-neural-network batch-normalization
用于人工智能目的的最佳编程语言是什么?
请注意,使用建议的语言我必须能够使用任何AI技术(或至少大多数).
Drop-Out是正规化技术.并且我想将它应用于非MNIST数据以减少过度拟合以完成我的Udacity深度学习课程作业.我已经阅读了关于如何调用的tensorflow文档tf.nn.dropout.这是我的代码
# before proceeding further.
from __future__ import print_function
import numpy as np
import tensorflow as tf
from six.moves import cPickle as pickle
pickle_file = 'notMNIST.pickle'
with open(pickle_file, 'rb') as f:
save = pickle.load(f)
train_dataset = save['train_dataset']
train_labels = save['train_labels']
valid_dataset = save['valid_dataset']
valid_labels = save['valid_labels']
test_dataset = save['test_dataset']
test_labels = save['test_labels']
del save # hint to help gc free up memory
print('Training set', train_dataset.shape, train_labels.shape)
print('Validation set', valid_dataset.shape, valid_labels.shape)
print('Test set', test_dataset.shape, test_labels.shape)
image_size = 28 …Run Code Online (Sandbox Code Playgroud) 普通Dense层中的第一个参数也是units,并且是该层中的神经元/节点的数量.然而,标准LSTM单元如下所示:
(这是" 理解LSTM网络 " 的重写版本)
在Keras,当我创建这样的LSTM对象LSTM(units=N, ...)时,我实际上是在创建N这些LSTM单元吗?或者它是LSTM单元内"神经网络"层的大小,即W公式中的?或者是别的什么?
对于上下文,我正在基于此示例代码工作.
以下是文档:https://keras.io/layers/recurrent/
它说:
units:正整数,输出空间的维数.
这让我觉得它是Keras LSTM"图层"对象的输出数量.意味着下一层将有N输入.这是否意味着NLSTM层中实际存在这些LSTM单元,或者可能只运行一个 LSTM单元用于N迭代输出N这些h[t]值,例如,从h[t-N]多达h[t]?
如果只定义了输出的数量,这是否意味着输入尚可,说,只是一个,还是我们必须手动创建滞后输入变量x[t-N]来x[t],一个由定义的每个LSTM单位units=N的说法?
在我写这篇文章的时候,我发现了论证的return_sequences作用.如果设置为True所有N输出都传递到下一层,而如果设置为False它,则只将最后一个h[t]输出传递给下一层.我对吗?
我刚才读过关于神经网络的文章,我理解ANN(特别是通过反向传播学习的多层感知器)如何能够学会将事件归类为真或假.
我认为有两种方法:
1)你得到一个输出神经元.它的值大于0.5,事件可能是真的,如果它的值<= 0.5,则事件可能是错误的.
2)你得到两个输出神经元,如果第一个的值大于第二个的值,则事件可能为真,反之亦然.
在这些情况下,ANN会告诉您事件是否可能是真的或可能是假的.它没有说明它有多大可能性.
有没有办法将这个值转换为某些赔率或直接从ANN获得赔率.我想得到一个输出,如"事件有84%的概率是真的"
我是神经网络领域的新手,我想知道Deep Belief Networks和Convolutional Networks之间的区别.还有,深度卷积网络是深信仰和卷积神经网络的结合吗?
这是我到现在为止所收集到的.如果我错了,请纠正我.
对于图像分类问题,Deep Belief网络有许多层,每个层都使用贪婪的分层策略进行训练.例如,如果我的图像大小是50 x 50,我想要一个4层的深度网络
我的输入层将具有50 x 50 = 2500个神经元,HL1 = 1000个神经元(比如说),HL2 = 100个神经元(比如说)和输出层= 10个神经元,以便训练输入层和HL1之间的权重(W1),I使用AutoEncoder(2500 - 1000 - 2500)并学习大小为2500 x 1000的W1(这是无监督学习).然后我通过第一个隐藏层向前馈送所有图像以获得一组特征,然后使用另一个自动编码器(1000-100-1000)来获得下一组特征,最后使用softmax层(100-10)进行分类.(仅学习最后一层的权重(HL2-作为softmax层的输出)是监督学习).
(我可以使用RBM而不是自动编码器).
如果使用卷积神经网络解决了同样的问题,那么对于50x50输入图像,我将仅使用7 x 7个补丁开发一个网络(比方说).我的图层就是
为了学习权重,我从尺寸为50 x 50的图像中取出7 x 7个补丁,并通过卷积层向前馈送,因此我将有25个不同的特征映射,每个都有大小(50 - 7 + 1)x(50 - 7) + 1)= 44 x 44.
然后我使用一个11x11的窗口用于汇集手,因此获得25个大小(4 x 4)的特征映射作为汇集层的输出.我使用这些功能图进行分类.
在学习权重时,我不像深度信念网络(无监督学习)那样使用分层策略,而是使用监督学习并同时学习所有层的权重.这是正确的还是有其他方法来学习权重?
我所理解的是正确的吗?
因此,如果我想使用DBN进行图像分类,我应该将所有图像调整到特定大小(例如200x200)并在输入层中放置那么多神经元,而在CNN的情况下,我只训练一个较小的补丁.输入(比如尺寸为200x200的图像为10 x 10)并将学习的权重卷积在整个图像上?
DBN提供的结果是否比CNN更好,还是纯粹依赖于数据集?
谢谢.
machine-learning computer-vision neural-network dbn autoencoder
neural-network ×10
keras ×4
python ×3
tensorflow ×2
autoencoder ×1
data-science ×1
dbn ×1
lstm ×1
nlp ×1
python-2.7 ×1
scikit-learn ×1