Это седьмой день моего участия в августовском испытании обновлений, подробности о мероприятии:Испытание августовского обновления
Tensorflow
- Однажды в ноябре 2015 года Google выпустила технический документ Tensorflow и вскоре сделала Tensorflow открытым исходным кодом. Благодаря техническому влиянию Google эта новость быстро распространилась в технологическом кругу, и все были взволнованы, услышав этот незнакомый термин без особой подсказки. Что такое Tensor, каково позиционирование Tensorflow и почему Google открывает его исходный код...
- Март 2016 г., чемпион мира по AlphaGo и Go, профессиональный игрок с девятью данами.Ли СедолпровестиВперед, человеко-машинная битва, выигранный с общим счетом 4: 1;
- В конце 2016 и начале 2017 года AlphaGo использовала учетную запись «Мастер» в качестве зарегистрированной учетной записи на китайском шахматном сайте, чтобы соревноваться с десятками мастеров го из Китая, Японии и Южной Кореи, и не потерпела ни одного поражения в 60 партиях подряд. .
- 27 мая 2017 года, после битвы человека и машины между Ке Цзе и AlphaGo, команда AlphaGo объявила, что AlphaGo больше не будет участвовать в соревнованиях по го.
- 18 октября 2017 года команда DeepMind анонсировала самую мощную версию AlphaGo под кодовым названием [AlphaGo Zero] (Энциклопедия Baidu.com/item/alpha G…Zero) использует неконтролируемое обучение
Operations(OP)
Все операции в Tensorflow обрабатываются как «да».OP, например, проходяTensor, операция, сеанс
Тензор (тензор)
Все входящие данные в Tensorflow вместе называютсяTensor,TensorМожно понимать как контейнер
скаляр (скаляр)
нульмерныйTensorназови этоскаляр, проще говоря, это число один за другим, например:
1,2,3,4,5
вектор
ОдномерныйTensorназови этовекторОн может быть представлен одномерным массивом, который эквивалентен столбцу данных или строке данных, например:
[1,2,3,4,5,6]
[2,3,4,5,6]
матрица
двухмерныйTensorОна называется матрицей и может быть представлена двумерным массивом, который эквивалентен таблице, например:
[
[1,2,3,4,5,6],
[2,3,4,5,6,7],
[3,4,5,6,7,8]
]
[[1,2,3,4,5,6], [2,3,4,5,6,7],[3,4,5,6,7,8]]
Тензор N-порядка
Ставим более чем второй заказTensorназови этоТензор N-порядка,НапримерN=3
называетсятензор третьего порядка, и аналогично, мы также можемвекторназываетсятензоры первого порядка,матрицаназываетсятензор второго порядка
[[[[[2,3,4,5,5],[1,2,3,3]][[1,2,3,3,],[2,2,2,3]...]]]]
График
мы используем для переноскиopиtensorконтейнер называетсяGraph, каждыйTensorflowПрограмма имеет график по умолчанию, и можно создавать новые графики.
Карта по умолчанию
# 使用默认图
a = tf.constant(3.0)
b = tf.constant(3.0)
t1 = tf.add(a,b)
graph = tf.get_default_graph()
пользовательская карта
#创新新图
g1 = tf.Graph()
with g1.as_default():
c = tf.constant(32.0)
d = tf.constant(32.0)
t2 = tf.add(c,d)
Сессия
бежатьGraphОП называет этоSession,ОдинSessionЗапускайте только по одномуGraph,SessionТоже ОП,SessionЕсли график не указан, по умолчанию выполняется график по умолчанию, а указанный график выполняется, когда указан график.
указанный график
g1 = tf.Graph()
with g1.as_default():
# 定义op及tensor
c = tf.constant(32.0)
d = tf.constant(32.0)
t2 = tf.add(c,d)
with tf.Session(graph=g1) as sess:
sess.run(g1)
Переменная
СоздайтеПеременнаятакжеop, переменные, используемые в тензорном потокеtf.Variable
создавать,ПеременнаяМожет сохраняться, обычныйtensorНет, определитепеременная операциядолжен быть вSessionсерединаинициализация
# 定义tensor
x = tf.constant([1,2,3,4,5])
# 定义变量
b = tf.Variable(tf.random_normal([2,3],mean=0.0,stddev=1.0))
# 定义出初始化 只是定义未执行
init = tf.global_variables_initializer()
with tf.Session() as sess:
# 执行初始化变量
sess.run(init)
# 执行打印变量
print(sess.run(b))
визуализация
TtensorflowПредоставляет инструменты веб-визуализации с помощьюtf.summary.FileWriter
Метод выводит сериализованный файл черезtensorboard
Прочитайте сериализованный файл и отобразите его, вы можете передатьopизname
Свойства управляют фоновым отображением
выходная сериализация
#tf.summary.FileWriter('文件输出目录',graph=指定的图)
tf.summary.FileWriter('./tmp/summary/test/',graph=sess.graph)
Прочтите файл последовательности, чтобы запустить веб-службу.
#tensorboard --logdir="序列化文件目录"
tensorboard --logdir="./tmp/summary/test"
Numpy
Numpy — это библиотека для научных вычислений, нижний уровень которой реализован на C++, а глобальная блокировка интерпретатора Python снята, что повышает производительность и обычно используется для операций с многомерными матрицами.
многомерные операции
#创建ndarray类型数据
arr = np.array([[[255,255,255,255,255],[255,255,255,255,255],[255,255,255,255,255]],[[255,255,255,255,255],[255,255,255,255,255],[255,255,255,255,255]],[[255,255,255,255,255],[255,255,255,255,255],[255,255,255,255,255]]])
#ndarray类型可直接进行运算
arr = arr/255.0
#输入出计算结果
print('arr',arr)
Линейная регрессия
формула
y = xw + b
- xсобственные значения
- yцелевое значение
- wВеса
- bкомпенсировать
эффект
Используйте целевое значение дополнительного значения для получения модели линейной регрессии, чтобы модель могла прогнозировать целевое значение при получении нового собственного значения.
градиентный спуск
Используйте градиентный спуск, чтобы оптимизировать функцию потерь
# tf.train.GradientDescentOptimizer(学习率).minimize(损失)
tf.train.GradientDescentOptimizer(0.1).minimize(loss)
градиентный взрыв
在极端情况下 学习率过大,导致权重的值变得非常大 以至于溢出 出现NaN
这种现象称之为梯度爆炸
код
#线性回归模型
def line():
# 1 建立数据
# 创建特征数据 1个特征 100个样本 1个目标
x = tf.random_normal([100, 1], mean=1.75, stddev=0.5, name='x')
# 真实值 假设 矩阵相乘 必须是矩阵
y_true = tf.matmul(x, [[0.7]]) + 0.8
# 2 建立线性回归模型 1个特征 1个权重 1个偏置量 y=xw+b
# 随机给一个权重和偏置 然后在当前状态下优化
# 随机建立权重 需要相乘 所以建立一个1行1列的矩阵 trainable字段默认为true 当trainable为true时 优化算法可以根据优化改变此值
w = tf.Variable(tf.random_normal([1, 1]),name='w',trainable=True)
# 建立偏置 因为相加所以可以为一个标量
b = tf.Variable(0.0)
# 建立模型 当前的训练结果 输出训练好的矩阵
y_p = tf.matmul(x, w) + b
# 3 建立损失函数
loss = tf.reduce_mean(tf.square(y_true - y_p))
# 优化损失函数 根据学习率和损失函数,改变Variable变量优化结果 学习率过大,可能引起数据指数级增长,产生梯度爆炸
train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
# 初始化变量
inita = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(inita)
for i in range(1000):
print('随机初始化权重{} 偏置{} '.format(w.eval(), b.eval()))
info = sess.run(train_op)
file = tf.summary.FileWriter('./tmp/summary/test/', graph=sess.graph)
if __name__ == '__main__':
line()