我试图在python中为tensorflow变量赋一个新值.
import tensorflow as tf
import numpy as np
x = tf.Variable(0)
init = tf.initialize_all_variables()
sess = tf.InteractiveSession()
sess.run(init)
print(x.eval())
x.assign(1)
print(x.eval())
Run Code Online (Sandbox Code Playgroud)
但我得到的输出是
0
0
Run Code Online (Sandbox Code Playgroud)
所以价值没有改变.我错过了什么?
python variable-assignment neural-network deep-learning tensorflow
我想知道是否可以保存部分训练的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) 目前我使用以下代码:
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
有人可以向我解释如何在整个反向传播中更新偏见吗?
我读了不少书,但找不到偏见更新!
我知道偏差是1的额外输入,附加了一个重量(对于每个神经元).必须有一个公式.
谢谢,
@msw
最有趣的.谢谢,我认为有两个好点:1."如果省略偏差项,多层感知器的"通用近似"属性与最常用的隐藏层激活函数不成立.但Hornik(1993)证明了没有偏差的通用逼近性质的充分条件是激活函数的衍生物在原点处没有消失,这意味着利用通常的S形激活函数,可以使用固定的非零偏置项代替可训练的偏差.2.偏差项可以像其他权重一样学习."所以我要么增加'恒定权重',要么像所有其他权重一样使用梯度下降训练这个权重.
我理解对吗?
math artificial-intelligence machine-learning neural-network
tensorflow是否有类似于scikit learn的用于处理分类数据的热门编码器?使用tf.string的占位符会表现为分类数据吗?
我意识到我可以在将数据发送到tensorflow之前手动预处理数据,但内置数据非常方便.
这是我在ANSI C中的感知器实现:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float randomFloat()
{
srand(time(NULL));
float r = (float)rand() / (float)RAND_MAX;
return r;
}
int calculateOutput(float weights[], float x, float y)
{
float sum = x * weights[0] + y * weights[1];
return (sum >= 0) ? 1 : -1;
}
int main(int argc, char *argv[])
{
// X, Y coordinates of the training set.
float x[208], y[208];
// Training set outputs.
int outputs[208];
int i = 0; // iterator
FILE *fp;
if …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个开源神经网络库.到目前为止,我已经看过FANN,WEKA和OpenNN.我应该看看其他人吗?当然,标准是文档,示例和易用性.
我正在玩一个ANN,这是Udacity DeepLearning课程的一部分.
我有一个任务,涉及使用L2丢失将一个隐藏的ReLU层引入网络.我想知道如何正确地引入它,以便所有权重都受到惩罚,而不仅仅是输出层的权重.
没有概括的网络代码位于帖子的底部(实际运行培训的代码超出了问题的范围).
引入L2的明显方法是用这样的方法替换损失计算(如果beta为0.01):
loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(out_layer, tf_train_labels) + 0.01*tf.nn.l2_loss(out_weights))
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,它会考虑输出层权重的值.我不确定,我们如何正确地惩罚进入隐藏的ReLU层的权重.是否需要它或引入输出层的惩罚将以某种方式保持隐藏的权重也检查?
#some importing
from __future__ import print_function
import numpy as np
import tensorflow as tf
from six.moves import cPickle as pickle
from six.moves import range
#loading data
pickle_file = '/home/maxkhk/Documents/Udacity/DeepLearningCourse/SourceCode/tensorflow/examples/udacity/notMNIST.pickle'
with open(pickle_file, 'rb') as f:
save = pickle.load(f)
train_dataset = save['train_dataset']
train_labels = save['train_labels']
valid_dataset = save['valid_dataset']
valid_labels = save['valid_labels']
test_dataset = save['test_dataset']
test_labels = save['test_labels']
del save # hint to help gc free up memory
print('Training …Run Code Online (Sandbox Code Playgroud) machine-learning neural-network regularized deep-learning tensorflow
我知道前馈神经网络的基础知识,以及如何使用反向传播算法对它们进行训练,但我正在寻找一种算法,而不是我可以用来通过强化学习在线训练ANN.
例如,推车杆摆动问题是我想用ANN解决的问题.在那种情况下,我不知道应该怎样做才能控制钟摆,我只知道我与理想位置有多接近.我需要根据奖励和惩罚来学习ANN.因此,监督学习不是一种选择.
另一种情况是蛇游戏,其中反馈被延迟,并且仅限于目标和反目标,而不是奖励.
我可以为第一种情况考虑一些算法,比如爬山或遗传算法,但我猜它们都会很慢.它们也可能适用于第二种情况,但速度极慢,不利于在线学习.
我的问题很简单:是否有一种简单的算法来训练具有强化学习的人工神经网络?我主要对实时奖励情况感兴趣,但如果基于目标的情境的算法可用,甚至更好.
language-agnostic algorithm machine-learning reinforcement-learning neural-network
如何在PyTorch中的网络中初始化权重和偏差(例如,使用He或Xavier初始化)?
neural-network ×10
python ×5
tensorflow ×4
algorithm ×2
keras ×2
c ×1
math ×1
perceptron ×1
pytorch ×1
regularized ×1