标签: keras

标准的Keras模型输出意味着什么?什么是Keras的时代和损失?

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

python machine-learning neural-network keras data-science

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

如何查找keras模型的参数数量?

对于前馈网络(FFN),可以轻松计算参数数量.鉴于CNN,LSTM等有一种快速查找keras模型中参数数量的方法吗?

deep-learning keras

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

如何返回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 .h5导出到tensorflow .pb?

我有一个新的数据集微调初始模型,并在Keras中将其保存为".h5"模型.现在我的目标是在android Tensorflow上运行我的模型,它只接受".pb"扩展名.问题是Keras或tensorflow中是否有任何库进行此转换?到目前为止我看过这篇文章:https: //blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html但还不清楚.

python keras tensorflow

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

keras:如何保存培训历史记录

在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的绘制图)?

python machine-learning neural-network deep-learning keras

39
推荐指数
6
解决办法
3万
查看次数

'Conv2D'从1减去3导致的负尺寸大小

我使用KerasTensorflow作为后端,这里是我的代码:

import numpy as np
np.random.seed(1373) 
import tensorflow as tf
tf.python.control_flow_ops = tf

import os
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.utils import np_utils

batch_size = 128
nb_classes = 10
nb_epoch = 12


img_rows, img_cols = 28, 28

nb_filters = 32

nb_pool = 2

nb_conv = 3


(X_train, y_train), (X_test, y_test) = mnist.load_data()

print(X_train.shape[0])

X_train = X_train.reshape(X_train.shape[0], 1, img_rows, img_cols)
X_test …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow

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

Keras中的自定义丢失功能

我正在研究一种图像类增量分类器方法,使用CNN作为特征提取器和一个完全连接的块进行分类.

首先,我对每个训练有素的VGG网络进行了微调,以完成一项新任务.一旦网络被训练用于新任务,我就为每个班级存储一些示例,以避免在新班级可用时忘记.

当某些类可用时,我必须计算样本的每个输出,包括新类的示例.现在为旧类的输出添加零,并在新类输出上添加与每个新类对应的标签,我有新标签,即:如果有3个新类输入....

旧班类型输出: [0.1, 0.05, 0.79, ..., 0 0 0]

新类类型输出:[0.1, 0.09, 0.3, 0.4, ..., 1 0 0]**最后的输出对应于类.

我的问题是,我如何改变自定义的损失函数来训练新的类?我想要实现的损失函数定义为:

损失功能

蒸馏损失对应于旧类别的输出以避免遗忘,而分类损失对应于新类别.

如果你能给我一些代码样本来改变keras中的损失函数会很好.

谢谢!!!!!

computer-vision deep-learning conv-neural-network keras loss-function

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

加载重量后如何在keras中添加和删除新图层?

我正在努力做转学习; 为此我想删除神经网络的最后两层并添加另外两层.这是一个示例代码,它也输出相同的错误.

from keras.models import Sequential
from keras.layers import Input,Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.layers.core import Dropout, Activation
from keras.layers.pooling import GlobalAveragePooling2D
from keras.models import Model

in_img = Input(shape=(3, 32, 32))
x = Convolution2D(12, 3, 3, subsample=(2, 2), border_mode='valid', name='conv1')(in_img)
x = Activation('relu', name='relu_conv1')(x)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), name='pool1')(x)
x = Convolution2D(3, 1, 1, border_mode='valid', name='conv2')(x)
x = Activation('relu', name='relu_conv2')(x)
x = GlobalAveragePooling2D()(x)
o = Activation('softmax', name='loss')(x)
model = Model(input=in_img, output=[o])
model.compile(loss="categorical_crossentropy", optimizer="adam")
#model.load_weights('model_weights.h5', by_name=True)
model.summary() …
Run Code Online (Sandbox Code Playgroud)

python theano keras keras-layer

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

使用ImageDataGenerator时,Keras分割列车测试集

我有一个目录,其中包含图像的子文件夹(根据标签).我想在Keras中使用ImageDataGenerator时将这些数据拆分为train和test set.尽管keras中的model.fit()具有用于指定拆分的参数validation_split,但我找不到与model.fit_generator()相同的参数.怎么做 ?

train_datagen = ImageDataGenerator(rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True)

train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    target_size=(img_width, img_height),
    batch_size=32,
    class_mode='binary')

model.fit_generator(
    train_generator,
    samples_per_epoch=nb_train_samples,
    nb_epoch=nb_epoch,
    validation_data=??,
    nb_val_samples=nb_validation_samples)
Run Code Online (Sandbox Code Playgroud)

我没有单独的验证数据目录,需要将其从训练数据中分离出来

keras train-test-split

38
推荐指数
6
解决办法
2万
查看次数

在Keras中,当我使用N`单位'创建有状态的'LSTM`层时,我究竟在配置什么?

普通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]输出传递给下一层.我对吗?

neural-network lstm keras tensorflow

38
推荐指数
4
解决办法
1万
查看次数