标签: keras

具有Tensorflow后端的Keras可以随意使用CPU或GPU吗?

我在Keras上安装了Tensorflow后端和CUDA.我想有时需要强迫Keras使用CPU.这可以在没有在虚拟环境中安装单独的CPU Tensorflow的情况下完成吗?如果是这样的话?如果后端是Theano,可以设置标志,但我还没有听说过可通过Keras访问的Tensorflow标志.

python machine-learning keras tensorflow

88
推荐指数
5
解决办法
10万
查看次数

Keras中的多对一和多对LSTM示例

我尝试了解LSTM以及如何使用Keras构建它们.我发现,主要有4种运行RNN的模式(图中右边4种)

在此输入图像描述 图片来源:Andrej Karpathy

现在我想知道他们每个人的简约代码片段在Keras中会是什么样子.所以像

model = Sequential()
model.add(LSTM(128, input_shape=(timesteps, data_dim)))
model.add(Dense(1))
Run Code Online (Sandbox Code Playgroud)

对于4个任务中的每个任务,可能只需要一点点解释.

machine-learning neural-network deep-learning keras recurrent-neural-network

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

如何在keras中连接两个层?

我有一个有两层神经网络的例子.第一层有两个参数,有一个输出.第二个应该采用一个参数作为第一层和另一个参数的结果.它应该是这样的:

x1  x2  x3
 \  /   /
  y1   /
   \  /
    y2
Run Code Online (Sandbox Code Playgroud)

所以,我创建了一个有两层的模型并尝试合并它们,但它返回一个错误:The first layer in a Sequential model must get an "input_shape" or "batch_input_shape" argument.就行了result.add(merged).

模型:

first = Sequential()
first.add(Dense(1, input_shape=(2,), activation='sigmoid'))

second = Sequential()
second.add(Dense(1, input_shape=(1,), activation='sigmoid'))

result = Sequential()
merged = Concatenate([first, second])
ada_grad = Adagrad(lr=0.1, epsilon=1e-08, decay=0.0)
result.add(merged)
result.compile(optimizer=ada_grad, loss=_loss_tensor, metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network keras

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

"扁平化"在克拉斯的作用

我试图了解该Flatten功能在Keras中的作用.下面是我的代码,这是一个简单的双层网络.它接收形状(3,2)的二维数据,并输出形状(1,4)的1维数据:

model = Sequential()
model.add(Dense(16, input_shape=(3, 2)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(4))
model.compile(loss='mean_squared_error', optimizer='SGD')

x = np.array([[[1, 2], [3, 4], [5, 6]]])

y = model.predict(x)

print y.shape
Run Code Online (Sandbox Code Playgroud)

这打印出y形状(1,4).但是,如果我删除该Flatten行,则打印出y具有形状(1,3,4)的行.

我不明白这一点.根据我对神经网络的理解,该model.add(Dense(16, input_shape=(3, 2)))功能正在创建一个隐藏的全连接层,具有16个节点.这些节点中的每一个都连接到3x2输入元件中的每一个.因此,该第一层输出处的16个节点已经"平坦".因此,第一层的输出形状应为(1,16).然后,第二层将其作为输入,并输出形状(1,4)的数据.

因此,如果第一层的输出已经是"平坦的"和形状(1,16),为什么我需要进一步压平它?

谢谢!

machine-learning neural-network deep-learning keras tensorflow

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

Keras提前停止

我正在使用Keras为我的项目训练神经网络.Keras提供了早期停止的功能.我是否应该知道应该观察哪些参数以避免我的神经网络过度拟合使用早期停止?

python deep-learning conv-neural-network keras

78
推荐指数
1
解决办法
5万
查看次数

Tensorflow - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)

上一个问题的延续:Tensorflow - TypeError: 'int' object is not iterable

我的训练数据是一个列表列表,每个列表包含 1000 个浮点数。例如,x_train[0] =

[0.0, 0.0, 0.1, 0.25, 0.5, ...]
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

model = Sequential()

model.add(LSTM(128, activation='relu',
               input_shape=(1000, 1), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))

opt = tf.keras.optimizers.Adam(lr=1e-3, decay=1e-5)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=3, validation_data=(x_test, y_test))
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Traceback (most recent call last):
      File "C:\Users\bencu\Desktop\ProjectFiles\Code\Program.py", line 88, in FitModel
        model.fit(x_train, y_train, epochs=3, validation_data=(x_test, y_test))
      File "C:\Users\bencu\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 728, in fit
        use_multiprocessing=use_multiprocessing)
      File "C:\Users\bencu\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 224, in fit …
Run Code Online (Sandbox Code Playgroud)

python lstm keras tensorflow

78
推荐指数
6
解决办法
15万
查看次数

如何从Keras中的HDF5文件加载模型?

如何从Keras中的HDF5文件加载模型?

我尝试了什么:

model = Sequential()

model.add(Dense(64, input_dim=14, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))

model.add(Dense(64, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))

model.add(Dense(2, init='uniform'))
model.add(Activation('softmax'))


sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)

checkpointer = ModelCheckpoint(filepath="/weights.hdf5", verbose=1, save_best_only=True)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2, callbacks=[checkpointer])
Run Code Online (Sandbox Code Playgroud)

上面的代码成功地将最佳模型保存到名为weights.hdf5的文件中.我想要做的是然后加载该模型.以下代码显示了我是如何尝试这样做的:

model2 = Sequential()
model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

IndexError                                Traceback (most recent call last)
<ipython-input-101-ec968f9e95c5> in <module>()
      1 model2 = Sequential()
----> 2 model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")

/Applications/anaconda/lib/python2.7/site-packages/keras/models.pyc in load_weights(self, filepath)
    582             g = f['layer_{}'.format(k)]
    583             weights …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras data-science

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

Keras,我训练模型后如何预测?

我正在玩路透社示例数据集,它运行正常(我的模型已经过培训).我读到了如何保存模型,所以我可以稍后加载它再次使用.但是如何使用此保存的模型来预测新文本?我用models.predict()吗?

我是否必须以特殊方式准备此文本?

我试过了

import keras.preprocessing.text

text = np.array(['this is just some random, stupid text'])
print(text.shape)

tk = keras.preprocessing.text.Tokenizer(
        nb_words=2000,
        filters=keras.preprocessing.text.base_filter(),
        lower=True,
        split=" ")

tk.fit_on_texts(text)
pred = tk.texts_to_sequences(text)
print(pred)

model.predict(pred)
Run Code Online (Sandbox Code Playgroud)

但我总是得到

(1L,)
[[2, 4, 1, 6, 5, 7, 3]]
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-83-42d744d811fb> in <module>()
      7 print(pred)
      8 
----> 9 model.predict(pred)

C:\Users\bkey\Anaconda2\lib\site-packages\keras\models.pyc in predict(self, x, batch_size, verbose)
    457         if self.model is None:
    458             self.build()
--> 459         return self.model.predict(x, batch_size=batch_size, verbose=verbose)
    460 
    461     def predict_on_batch(self, x): …
Run Code Online (Sandbox Code Playgroud)

python theano deep-learning keras

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

如何修复imdb.load_data()函数的“ allow_pickle = False时无法加载对象数组”?

我正在尝试使用Google Colab中的IMDb数据集实现二进制分类示例。我以前已经实现了此模型。但是,几天后我再次尝试执行此操作时,它返回一个值错误:对于load_data()函数,当allow_pickle = False时无法加载对象数组。

我已经尝试解决此问题,请参考一个类似问题的现有答案:如何修复sketch_rnn算法中的“当allow_pickle = False时无法加载对象数组”, 但事实证明,仅添加allow_pickle参数是不够的。

我的代码:

from keras.datasets import imdb
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
Run Code Online (Sandbox Code Playgroud)

错误:

ValueError                                Traceback (most recent call last)
<ipython-input-1-2ab3902db485> in <module>()
      1 from keras.datasets import imdb
----> 2 (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

2 frames
/usr/local/lib/python3.6/dist-packages/keras/datasets/imdb.py in load_data(path, num_words, skip_top, maxlen, seed, start_char, oov_char, index_from, **kwargs)
     57                     file_hash='599dadb1135973df5b59232a0e9a887c')
     58     with np.load(path) as f:
---> 59         x_train, labels_train = f['x_train'], f['y_train']
     60         x_test, labels_test = f['x_test'], f['y_test']
     61 

/usr/local/lib/python3.6/dist-packages/numpy/lib/npyio.py …
Run Code Online (Sandbox Code Playgroud)

python numpy keras

72
推荐指数
8
解决办法
7万
查看次数

加载训练有素的Keras模型并继续训练

我想知道是否可以保存部分训练的Keras模型并在再次加载模型后继续训练.

这样做的原因是我将来会有更多的训练数据,我不想再次重新训练整个模型.

我正在使用的功能是:

#Partly train model
model.fit(first_training, first_classes, batch_size=32, nb_epoch=20)

#Save partly trained model
model.save('partly_trained.h5')

#Load partly trained model
from keras.models import load_model
model = load_model('partly_trained.h5')

#Continue training
model.fit(second_training, second_classes, batch_size=32, nb_epoch=20)
Run Code Online (Sandbox Code Playgroud)

编辑1:添加了完整的工作示例

使用10个时期之后的第一个数据集,最后一个纪元的损失将为0.0748,准确度为0.9863.

保存,删除和重新加载模型后,在第二个数据集上训练的模型的损失和准确性将分别为0.1711和0.9504.

这是由新的训练数据还是完全重新训练的模型引起的?

"""
Model by: http://machinelearningmastery.com/
"""
# load (downloaded if needed) the MNIST dataset
import numpy
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import np_utils
from keras.models import load_model
numpy.random.seed(7)

def baseline_model():
    model = Sequential()
    model.add(Dense(num_pixels, input_dim=num_pixels, init='normal', …
Run Code Online (Sandbox Code Playgroud)

python neural-network keras tensorflow resuming-training

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