我一直在关注Andrew NG在神经网络上的视频。在这些视频中,他没有将偏见与每个神经元联系在一起。取而代之的是,他在计算出每层的激活后在每层的开头添加一个偏差单位,并将该偏差与计算结果一起用于计算下一层的激活(正向传播)。
然而,在机器学习和喜欢视频的一些其他博客这个,还有与每个神经元相关的偏差。这种差异是什么以及为什么产生什么?它的含义是什么?
我的一位教授给了我一个小脚本,用来在每个学习时代之后可视化他的神经网络的演变.这是3个值的图:火车损失,列车错误和测试错误.
前两个有什么区别?
artificial-intelligence machine-learning neural-network conv-neural-network tensorflow
我运行在Keras中使用imdb数据集的LSTM网络的示例代码.可以在以下链接中找到代码. imdb_lstm.py
我的问题是随着代码的进展,训练损失减少,训练准确度也随着预期的增加而增加,但验证准确度在一个区间内波动,验证损失增加到一个很高的值.我附上下面培训阶段的部分日志.即使我观察到,当训练损失非常小(~0.01-0.03)时,有时它会在下一个时期增加,然后再次减少.我提到的可以在时代75-77中看到.但总的来说它会减少.
我的期望是训练准确性总是增加到0.99-1,训练损失总是减少.此外,验证准确度应该从0.4开始并最终提高到例如0.8.如果验证准确性没有改善,那么在时代期间等待的重点是什么?最后,测试精度接近0.81.
我也尝试了自己的数据并提出了相同的情况.我以类似的方式处理我的数据.我的意思是我的训练,验证和测试点的处理方式与本示例代码中的逻辑相同.
此外,在从LSTM获取每个单词的输出后,我不明白该代码如何表示整个句子.它是否进行均值或最大池化,或者在将其提供给逻辑回归分类器之前是仅采用LSTM层的最后一个输出?
任何帮助,将不胜感激.
Using Theano backend.
Loading data...
25000 train sequences
25000 test sequences
Pad sequences (samples x time)
X_train shape: (25000, 80)
X_test shape: (25000, 80)
Build model...
Train...
Train on 22500 samples, validate on 2500 samples
Epoch 1/100
22500/22500 [==============================] - 236s - loss: 0.5438 - acc: 0.7209 - val_loss: 0.4305 - val_acc: 0.8076
Epoch 2/100
22500/22500 [==============================] - 237s - loss: 0.3843 - acc: 0.8346 - val_loss: 0.3791 - val_acc: 0.8332
Epoch 3/100 …Run Code Online (Sandbox Code Playgroud) neural-network deep-learning lstm keras recurrent-neural-network
flow_from_directory(目录):它接收目录但不接受分割训练图像.
sklearn.model_selection.KFold:提供图像的拆分索引.那些可以用在fit()中但不能用在fit_generator()中
任何人如何使用KFold和ImageDataGenerator?它在那里吗?
这是我的代码.我想使用Keras进行多分类.训练时vcl_acc更好,但预测值总是相同的值.我很困惑,请帮助我
train.py
# coding: UTF-8
# author: Sun Yongke (sunyongke@gmail.com)
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import EarlyStopping
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.optimizers import SGD
# Dense(64) is a fully-connected layer with 64 hidden units.
# in the first layer, you must specify the expected input data shape:
# here, 20-dimensional vectors.
# dimensions of our images.
img_width, img_height = 300, 300
nb_epoch=20
train_data_dir = '../picture/samples_300_2/train'
validation_data_dir …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写序列以在keras中对RNN进行排序.我使用我从网上理解的内容编写了这个程序.我首先表征然后将文本转换的文本成序列和填充,以形成特征变量X.获得目标变量Y,首先将x向左移动然后填充它.最后,我将我的功能和目标变量提供给了我的LSTM模型.
这是我为此目的用keras编写的代码.
from keras.preprocessing.text import Tokenizer,base_filter
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Dense, Activation,Dropout,Embedding
from keras.layers import LSTM
def shift(seq, n):
n = n % len(seq)
return seq[n:] + seq[:n]
txt="abcdefghijklmn"*100
tk = Tokenizer(nb_words=2000, filters=base_filter(), lower=True, split=" ")
tk.fit_on_texts(txt)
x = tk.texts_to_sequences(txt)
#shifing to left
y = shift(x,1)
#padding sequence
max_len = 100
max_features=len(tk.word_counts)
X = pad_sequences(x, maxlen=max_len)
Y = pad_sequences(y, maxlen=max_len)
#lstm model
model = Sequential()
model.add(Embedding(max_features, 128, …Run Code Online (Sandbox Code Playgroud) python neural-network keras recurrent-neural-network sequence-to-sequence
我有关于keras和卷积神经网络的问题:
1.如何使用keras和卷积神经网络创建边界框?
2.如何使用keras vgg16应用程序再培训?
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.1,
zoom_range=0.1,
rotation_range=5.,
width_shift_range=0.1,
height_shift_range=0.1)
val_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size = (img_width, img_height),
batch_size = 20,
shuffle = True,
classes = TYPES,
class_mode = 'categorical')
validation_generator = val_datagen.flow_from_directory(
val_data_dir,
target_size=(img_width, img_height),
batch_size=20,
shuffle = True,
classes = TYPES,
class_mode = 'categorical')
model.fit_generator(
train_generator,
samples_per_epoch = 2000,
nb_epoch = 20
)
Epoch 14/50
480/2000 [======>.......................] - ETA: 128s - loss: 0.8708
Epoch 13/50
2021/2000 [==============================] - 171s - loss: 0.7973 - acc: 0.7041
Run Code Online (Sandbox Code Playgroud)
我的ImageGenerators从文件夹中读取2261次训练和567次测试图像.我试图用2000 …
当我训练几个具有不同初始化的相同架构的模型时,如何在Keras模型中平均权重?
现在我的代码看起来像这样?
datagen = ImageDataGenerator(rotation_range=15,
width_shift_range=2.0/28,
height_shift_range=2.0/28
)
epochs = 40
lr = (1.234e-3)
optimizer = Adam(lr=lr)
main_input = Input(shape= (28,28,1), name='main_input')
sub_models = []
for i in range(5):
x = Conv2D(32, kernel_size=(3,3), strides=1)(main_input)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = MaxPool2D(pool_size=2)(x)
x = Conv2D(64, kernel_size=(3,3), strides=1)(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = MaxPool2D(pool_size=2)(x)
x = Conv2D(64, kernel_size=(3,3), strides=1)(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = Flatten()(x)
x = Dense(1024)(x)
x = BatchNormalization()(x)
x = Activation('relu')(x) …Run Code Online (Sandbox Code Playgroud) 我想尝试实现所附图像的神经网络架构:1DCNN_model
考虑到我有一个数据集X,(N_signals, 1500, 40)其中40是我要对其进行一维卷积的要素数量。我的Y是,(N_signals, 1500, 2)并且我正在与keras。每个1d卷积都需要采用一个特征向量,如下图所示:1DCNN_convolution
因此,它必须获取1500个时间样本中的一个,将其传递到1d卷积层(沿时间轴滑动),然后将所有输出特征馈送到LSTM层。
我试图用这段代码实现第一个卷积部分,但是我不确定它在做什么,我不明白它一次只能占用一个块(也许我之前需要预处理输入数据?):
input_shape = (None, 40)
model_input = Input(input_shape, name = 'input')
layer = model_input
convs = []
for i in range(n_chunks):
conv = Conv1D(filters = 40,
kernel_size = 10,
padding = 'valid',
activation = 'relu')(layer)
conv = BatchNormalization(axis = 2)(conv)
pool = MaxPooling1D(40)(conv)
pool = Dropout(0.3)(pool)
convs.append(pool)
out = Merge(mode = 'concat')(convs)
conv_model = Model(input = layer, output = out)
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?非常感谢你
keras ×8
python ×6
tensorflow ×3
bias-neuron ×1
bounding-box ×1
convolution ×1
keras-layer ×1
lstm ×1
python-3.x ×1
scikit-learn ×1