目前我使用以下代码:
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)
Run Code Online (Sandbox Code Playgroud)
它告诉Keras在2个时期的损失没有改善时停止训练.但是我希望在损失变得小于某些常数"THR"之后停止训练:
if val_loss < THR:
break
Run Code Online (Sandbox Code Playgroud)
我在文档中看到有可能进行自己的回调:http: //keras.io/callbacks/ 但是没有找到如何停止训练过程.我需要一个建议.
python machine-learning neural-network conv-neural-network keras
我注意到在Keras中没有更多的weight_regularizer可用,并且取而代之的是有活动和内核规范化器.我想知道:
我正在尝试使用以下Keras包在Python中使用神经网络:
from keras.utils import np_utils
from keras.layers.core import Dense, Activation, Dropout
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.optimizers import SGD
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
15 import theano
---> 16 from theano import gof
17 from theano.compat.python2x import partial
18 import theano.compile.mode
ImportError: cannot import name gof
Run Code Online (Sandbox Code Playgroud)
安装已安装conda install keras.后来我尝试使用pip install Theano,但它没有用.我试图安装使用pip install git,但我收到此错误:cannot find command git.所以我安装了Git并设置了环境变量.
那么,有没有安装这些软件包的程序?
我开始学习Keras,我认为它是Tensorflow和Theano之上的一层.但是,我只能访问AMD GPU,例如AMD R9 280X.
如何设置我的Python环境,以便通过Keras/Tensorflow支持OpenCL来使用我的AMD GPU?
我在OSX上运行.
每次我imdb_lstm.py从Keras框架运行示例时,我得到不同的结果(测试准确性)(https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py)代码包含np.random.seed(1337)在顶部,在任何keras之前进口.它应该防止它为每次运行生成不同的数字.我错过了什么?
更新:如何重现:
UPDATE2:我在Windows 8.1上使用MinGW/msys运行它,模块版本:
theano 0.7.0
numpy 1.8.1
scipy 0.14.0c1
更新3:我把问题缩小了一点.如果我用GPU运行示例(设置theano flag device = gpu0),那么每次都会得到不同的测试精度,但是如果我在CPU上运行它,那么一切都按预期工作.我的显卡:NVIDIA GeForce GT 635)
使用.fit_generator()or训练图像分类器.fit()并将字典传递给class_weight=作为参数。
我在 TF1.x 中从未出错,但在 2.1 中,我在开始训练时得到以下输出:
WARNING:tensorflow:sample_weight modes were coerced from
...
to
['...']
Run Code Online (Sandbox Code Playgroud)
将某物从 强制...到是什么意思['...']?
了解关于这一警告源tensorflow的回购是在这里,摆放的意见是:
尝试将 sample_weight_modes 强制为目标结构。这隐含地取决于模型将其内部表示的输出展平的事实。
我不确定如何在以下情况下解释Keras的默认行为:
我的Y(基本事实)是使用scikit-learn's MultilabelBinarizer()建立的.
因此,为了给出一个随机的例子,我的y列的一行是单热编码的:
[0,0,0,1,0,1,0,0,0,0,1].
所以我有11个可以预测的课程,不止一个可以成真; 因此问题的多标签性质.这个特定样品有三个标签.
我像我一样训练模型用于非多标签问题(照常营业),我没有错误.
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(5000, activation='relu', input_dim=X_train.shape[1]))
model.add(Dropout(0.1))
model.add(Dense(600, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(y_train.shape[1], activation='softmax'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy',])
model.fit(X_train, y_train,epochs=5,batch_size=2000)
score = model.evaluate(X_test, y_test, batch_size=2000)
score
Run Code Online (Sandbox Code Playgroud)
当Keras遇到我y_train并且看到它是"多"单热编码时会做什么,这意味着每一行中存在多个"一" y_train?基本上,Keras会自动执行多标签分类吗?评分指标的解释有何不同?
我是第一次运行LSTM模型.这是我的模型:
opt = Adam(0.002)
inp = Input(...)
print(inp)
x = Embedding(....)(inp)
x = LSTM(...)(x)
x = BatchNormalization()(x)
pred = Dense(5,activation='softmax')(x)
model = Model(inp,pred)
model.compile(....)
idx = np.random.permutation(X_train.shape[0])
model.fit(X_train[idx], y_train[idx], nb_epoch=1, batch_size=128, verbose=1)
Run Code Online (Sandbox Code Playgroud)
在训练模型时,使用详细信息有什么用?
我在Keras有一个功能模型(来自repo示例的Resnet50).我训练了它ImageDataGenerator和flow_from_directory数据并将模型保存到.h5文件中.当我打电话时,model.predict我得到了一组类概率.但我想将它们与类标签相关联(在我的例子中 - 文件夹名称).我怎么能得到它们?我发现我可以使用model.predict_classes和model.predict_proba,但我在功能模型中没有这些功能,只在Sequential中.
keras ×10
python ×7
python-2.7 ×2
tensorflow ×2
theano ×2
anaconda ×1
keras-layer ×1
numpy ×1
opencl ×1
python-3.x ×1
tf.keras ×1
verbose ×1