小编Mar*_*jko的帖子

Keras model.summary()结果 - 理解参数数量

我有一个简单的NN模型,用于检测使用Keras(Theano后端)在python中编写的28x28px图像的手写数字:

model0 = Sequential()

#number of epochs to train for
nb_epoch = 12
#amount of data each iteration in an epoch sees
batch_size = 128

model0.add(Flatten(input_shape=(1, img_rows, img_cols)))
model0.add(Dense(nb_classes))
model0.add(Activation('softmax'))
model0.compile(loss='categorical_crossentropy', 
         optimizer='sgd',
         metrics=['accuracy'])

model0.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
      verbose=1, validation_data=(X_test, Y_test))

score = model0.evaluate(X_test, Y_test, verbose=0)

print('Test score:', score[0])
print('Test accuracy:', score[1])
Run Code Online (Sandbox Code Playgroud)

运行良好,我的准确度达到了90%.然后,我执行以下命令,通过执行操作获取网络结构的摘要print(model0.summary()).这输出如下:

Layer (type)         Output Shape   Param #     Connected to                     
=====================================================================
flatten_1 (Flatten)   (None, 784)     0           flatten_input_1[0][0]            
dense_1 (Dense)     (None, 10)       7850        flatten_1[0][0]                  
activation_1        (None, 10)          0           dense_1[0][0] …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network theano keras

42
推荐指数
4
解决办法
6万
查看次数

为什么plt.imshow()不显示图像?

我是keras的新手,当我试图在我的linux上运行我的第一个keras程序时,有些事情并没有按照我的意愿去做.这是我的python代码:

import numpy as np
np.random.seed(123)
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test) = mnist.load_data()
print X_train.shape
from matplotlib import pyplot as plt
plt.imshow(X_train[0])
Run Code Online (Sandbox Code Playgroud)

最后一句没有显示任何内容.我从教程中复制了那些代码而没有任何修改.在我的计算机上matplotlib的后端没有任何问题.我通过下面的代码测试了它.

import matplotlib.pyplot as plt

data = [[0, 0.25], [0.5, 0.75]]

fig, ax = plt.subplots()
im = ax.imshow(data, cmap=plt.get_cmap('hot'), interpolation='nearest',
               vmin=0, vmax=1)
fig.colorbar(im)
plt.show()
Run Code Online (Sandbox Code Playgroud)

然后我得到了这样的图像: 在此输入图像描述


而且,我可以打印X_train [0],看起来没有错.
那可能是什么原因呢?为什么我的第一个代码中的imshow()函数没有显示任何内容?

python machine-learning matplotlib neural-network keras

42
推荐指数
3
解决办法
9万
查看次数

如何返回Keras中验证丢失的历史记录

使用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)

python nlp neural-network deep-learning keras

40
推荐指数
5
解决办法
6万
查看次数

Keras文本预处理 - 将Tokenizer对象保存到文件以进行评分

我通过以下步骤(广泛地)使用Keras库训练了情绪分类器模型.

  1. 使用Tokenizer对象/类将Text语料库转换为序列
  2. 使用model.fit()方法构建模型
  3. 评估此模型

现在,使用此模型进行评分,我能够将模型保存到文件并从文件加载.但是我没有找到将Tokenizer对象保存到文件的方法.如果没有这个,我每次需要得到一个句子时都必须处理语料库.有没有解决的办法?

nlp machine-learning neural-network deep-learning keras

36
推荐指数
3
解决办法
2万
查看次数

如何将Keras丢失输出记录到文件中

当您运行Keras神经网络模型时,您可能会在控制台中看到类似的内容:

Epoch 1/3
   6/1000 [..............................] - ETA: 7994s - loss: 5111.7661
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,损失有望得到改善.我希望随着时间的推移将这些损失记录到文件中,以便我可以从中学习.我试过了:

logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我不确定在这种情况下我需要什么级别的日志记录.

我也尝试过使用类似的回调:

def generate_train_batch():
    while 1:
        for i in xrange(0,dset_X.shape[0],3):
            yield dset_X[i:i+3,:,:,:],dset_y[i:i+3,:,:]

class LossHistory(keras.callbacks.Callback):
    def on_train_begin(self, logs={}):
        self.losses = []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))
logloss=LossHistory()
colorize.fit_generator(generate_train_batch(),samples_per_epoch=1000,nb_epoch=3,callbacks=['logloss'])
Run Code Online (Sandbox Code Playgroud)

但显然这不是写入文件.无论采用何种方法,通过回调或记录模块或其他任何方式,我都希望听到您将keras神经网络丢失记录到文件中的解决方案.谢谢!

python logging machine-learning neural-network keras

34
推荐指数
3
解决办法
4万
查看次数

Keras - categorical_accuracy和sparse_categorical_accuracy之间的区别

categorical_accuracysparse_categorical_accuracyKeras有什么区别?这些指标文档中没有任何提示,并且通过询问谷歌博士,我也没有找到答案.

源代码可以在这里找到:

def categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.argmax(y_true, axis=-1),
                          K.argmax(y_pred, axis=-1)),
                  K.floatx())


def sparse_categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.max(y_true, axis=-1),
                          K.cast(K.argmax(y_pred, axis=-1), K.floatx())),
                  K.floatx())
Run Code Online (Sandbox Code Playgroud)

classification machine-learning neural-network deep-learning keras

33
推荐指数
3
解决办法
2万
查看次数

从Keras的imdb数据集恢复原始文本

从Keras的imdb数据集恢复原始文本

我想从Keras的imdb数据集中恢复imdb的原始文本.

首先,当我加载Keras的imdb数据集时,它返回了单词索引的序列.

>>> (X_train, y_train), (X_test, y_test) = imdb.load_data()
>>> X_train[0]
[1, 14, 22, 16, 43, 530, 973, 1622, 1385, 65, 458, 4468, 66, 3941, 4, 173, 36, 256, 5, 25, 100, 43, 838, 112, 50, 670, 22665, 9, 35, 480, 284, 5, 150, 4, 172, 112, 167, 21631, 336, 385, 39, 4, 172, 4536, 1111, 17, 546, 38, 13, 447, 4, 192, 50, 16, 6, 147, 2025, 19, 14, 22, 4, 1920, 4613, 469, 4, 22, 71, 87, …
Run Code Online (Sandbox Code Playgroud)

python nlp machine-learning neural-network keras

30
推荐指数
2
解决办法
8115
查看次数

使用Keras构建多变量,多任务LSTM

前言

我目前正在研究机器学习问题,我们的任务是使用过去的产品销售数据来预测未来的销售量(以便商店可以更好地计划他们的库存).我们基本上有时间序列数据,对于每一个产品,我们知道在哪几天销售了多少单位.我们还提供有关天气如何,是否有公众假期,是否有任何产品销售等信息.

我们已经能够使用具有密集层的MLP取得一些成功,并且仅使用滑动窗口方法来包括周围几天的销售量.但是,我们相信,通过LSTM等时间序列方法,我们将能够获得更好的结果.

数据

我们的数据基本如下:

在此输入图像描述

(编辑:为清楚起见,上图中的"时间"列不正确.我们每天输入一次,而不是每月一次.但结构是相同的!)

所以X数据的形状如下:

(numProducts, numTimesteps, numFeatures) = (50 products, 1096 days, 90 features)
Run Code Online (Sandbox Code Playgroud)

并且Y数据的形状如下:

(numProducts, numTimesteps, numTargets) =  (50 products, 1096 days, 3 binary targets)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,我们有三年的数据(2014年,2015年,2016年),并希望对此进行培训,以便对2017年进行预测.(当然,这不是100%正确,因为我们实际上有数据截至2017年10月,但我们只是现在忽略它)

问题

我想在Keras建立一个LSTM,允许我做出这些预测.有几个地方我被卡住了.所以我有六个具体问题(我知道应该尝试将Stackoverflow帖子限制为一个问题,但这些问题都是交织在一起的).

首先,我如何为批次切割数据?由于我有三年的时间,所以只需按顺序推进三批,每次大小一年是否合理?或者更小的批次(比如30天)以及使用滑动窗口更有意义吗?也就是说,不是36个批次,每个30天,我使用36*6批次,每个30天,每次滑动5天?或者这不是真的应该使用LSTM的方式吗?(请注意,数据中存在相当多的季节性,我需要捕捉这种长期趋势).

其次,在这里使用 return_sequences=True是否有意义?换句话说,我保持我的Y数据是(50, 1096, 3)这样的(据我所知),每个时间步都有一个预测,可以针对目标数据计算损失?或者我会更好return_sequences=False,因此只有每批的最终价值用于评估损失(即如果使用年度批次,那么在2016年的产品1,我们评估2016年12月的价值(1,1,1)).

第三,我该如何处理50种不同的产品?它们是不同的,但仍然强相关,我们已经看到其他方法(例如具有简单时间窗的MLP),当所有产品被考虑在同一模型中时,结果更好.目前摆在桌面上的一些想法是:

  • 将目标变量更改为不仅仅是3个变量,而是3*50 = 150; 即,对于每个产品,有三个目标,所有目标都是同时训练的.
  • 将LSTM层之后的结果分成50个密集网络,将LSTM的输出作为输入,加上每个产品特有的一些功能 - 即我们得到一个具有50个丢失函数的多任务网络,然后我们优化一起.那会疯了吗?
  • 将产品视为单一观察,并在LSTM层中包含产品特定功能.仅使用这一层,然后使用大小为3的输出层(对于三个目标).在单独的批次中推送每个产品.

第四,我如何处理验证数据?通常我会随机选择一个随机选择的样本进行验证,但在这里我们需要保持时间排序.所以我想最好只是暂时搁置几个月?

第五,这是我可能最不清楚的部分 - 我如何使用实际结果来执行预测?假设我使用return_sequences=False和训练了三年三次(每次都是11月),目标是训练模型以预测下一个值(2014年12月,2015年12月,2016年12月).如果我想在2017年使用这些结果,这实际上是如何工作的?如果我理解正确的话,我在这个例子中唯一可以做的就是为2017年1月到11月的所有数据点提供模型,它会给我回到2017年12月的预测.这是正确的吗?但是,如果我使用return_sequences=True,然后对截至2016年12月的所有数据进行培训,那么我是否能够通过给出模型在2017年1月观察到的特征来获得2017年1月的预测?或者我需要在2017年1月之前的12个月内给它吗?那么2017年2月,我是否需要在2017年之前再提供11个月的价值?(如果听起来我很困惑,那是因为我!)

最后,根据我应该使用的结构,我如何在Keras中这样做?我现在想到的是以下几点:(虽然这只适用于一种产品,因此不能解决所有产品都在同一型号中):

Keras代码

trainX = …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network lstm keras tensorflow

22
推荐指数
2
解决办法
2778
查看次数

Spacy链接错误

运行时:

import spacy
nlp = spacy.load('en')
Run Code Online (Sandbox Code Playgroud)

打印如下:

警告:找不到'en'的模型只加载'en'标记生成器.

/site-packages/spacy/data除init文件外,它是空的.所有文件路径只指向我的单个python安装.

任何有助于解决此问题的帮助.

谢谢!将

python models spacy

20
推荐指数
4
解决办法
2万
查看次数

Keras中密集层和激活层之间的区别

我想知道Keras中激活层和密集层之间的区别是什么.

由于激活层似乎是一个完全连接的层,而Dense有一个参数来传递激活函数,最佳做法是什么?

让我们想象一个像这样的虚构网络:输入 - >密集 - >辍学 - >最后一层最后一层应该是:密集(激活= softmax)还是激活(softmax)?什么是最干净的,为什么?

感谢大家!

python machine-learning neural-network deep-learning keras

19
推荐指数
1
解决办法
5415
查看次数