我只是试着找出如何使用Caffe.为此,我只是看了一下.prototxt示例文件夹中的不同文件.有一个我不明白的选择:
# The learning rate policy
lr_policy: "inv"
Run Code Online (Sandbox Code Playgroud)
可能的值似乎是:
"fixed""inv""step""multistep""stepearly""poly" 有人可以解释一下这些选择吗?
machine-learning neural-network gradient-descent deep-learning caffe
我希望InfogainLoss在我的模型中使用类型的损失层.但我很难正确定义它.
关于INFOGAIN_LOSS图层的使用是否有任何教程/示例?
这个层的输入,类概率,应该是SOFTMAX层的输出,还是足以输入完全连接层的"顶部"?
INFOGAIN_LOSS需要三个输入:类概率,标签和矩阵H.矩阵H可以作为层参数提供infogain_loss_param { source: "fiename" }.
假设我有一个计算一个Python脚本H的numpy.array形状(L,L)与dtype='f4'(其中L是标签在我的模型的数量).
如何将我转换numpy.array为binproto可以作为infogain_loss_param { source }模型提供的文件?
假设我想H作为损失层的第三个输入(底部)提供(而不是作为模型参数).我怎样才能做到这一点?
我是否定义了一个"顶部"的新数据层H?如果是这样,那么每次训练迭代都不会增加该层的数据,就像训练数据增加一样?如何定义多个不相关的输入"数据"层,以及caffe如何知道从批处理批量读取训练/测试"数据"层,而从H"数据"层知道只读一次所有的训练过程?
当在训练期间遇到困难时(nans,损失不会收敛等),通过debug_info: true在'solver.prototxt'文件中设置来查看更详细的训练日志有时是有用的.
然后训练日志看起来像:
Run Code Online (Sandbox Code Playgroud)I1109 ...] [Forward] Layer data, top blob data data: 0.343971 I1109 ...] [Forward] Layer conv1, top blob conv1 data: 0.0645037 I1109 ...] [Forward] Layer conv1, param blob 0 data: 0.00899114 I1109 ...] [Forward] Layer conv1, param blob 1 data: 0 I1109 ...] [Forward] Layer relu1, top blob conv1 data: 0.0337982 I1109 ...] [Forward] Layer conv2, top blob conv2 data: 0.0249297 I1109 ...] [Forward] Layer conv2, param blob 0 …
machine-learning neural-network gradient-descent deep-learning caffe
我一直使用Keras从我的神经网络中获得一些NaN输出.我每10,000个结果只得到一个NaN.最初我有一个relu激活层进入最终的softmax层.这产生了更多的NaN结果.我将构成网络中最后两个密集层的激活函数从relu更改为sigmoid.这使问题更好,但我仍然得到NaN.关于如何完全消除楠的任何建议?
model = Sequential()
model.add(InputLayer((1, IMG_H, IMG_W)))
model.add(Convolution2D(32, 3, 3, activation = 'relu'))
model.add(Convolution2D(32, 3, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size = (2, 2)))
model.add(Dropout(0.3))
model.add(Convolution2D(64, 3, 3, activation = 'relu'))
model.add(Convolution2D(64, 3, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size = (2, 2)))
model.add(Dropout(0.3))
model.add(Flatten())
model.add(Dense(256, activation = 'sigmoid'))
model.add(Dropout(0.3))
model.add(Dense(64, activation = 'sigmoid'))
model.add(Dropout(0.3))
model.add(Dense(categories, activation = 'softmax'))
Run Code Online (Sandbox Code Playgroud) 我已经在 google colab 中使用 GPU 调整了这段代码来创建多层 LSTM。它用于时间序列预测。
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM, LSTM, BatchNormalization
from keras.optimizers import SGD
model = Sequential()
model.add(LSTM(units = 50, activation = 'relu', return_sequences=True, input_shape=
(1,len(FeaturesDataFrame.columns))))
model.add(Dropout(0.2))
model.add(LSTM(3, return_sequences=False))
model.add(Dense(1))
opt = SGD(lr=0.01, momentum=0.9, clipvalue=5.0)
model.compile(loss='mean_squared_error', optimizer=opt)
Run Code Online (Sandbox Code Playgroud)
请注意,我使用了渐变剪辑。但是,当我训练这个模型时,它仍然返回 nan 作为训练损失:
history = model.fit(X_t_reshaped, train_labels, epochs=20, batch_size=96, verbose=2)
Run Code Online (Sandbox Code Playgroud)
这是结果
Run Code Online (Sandbox Code Playgroud)Epoch 1/20 316/316 - 2s - loss: …