Линейная регрессия тензора не сходится к правильным значениям

У меня есть набор данных CSV learningRate = 0,001 эпохами = 2000 BATCHSIZE = 20 DF = PD . read_csv ( "C: \ Пользователи \ Брайан \ Рабочий стол \ data.csv" ) X = df [ df . столбцы [ 0 ]]. значения Y = df [ df . столбцы [ 1 ]]. значения def getBatch ( batchSize , входы , выходы ): idx = np . arange ( 0 , len ( входы )) np . случайный . shuffle ( idx ) idx = idx [: batchSize ] xBatch = [ входы [ i ] для i в idx ] yBatch = [ выходы [ i ] для i в idx ] xBatch = np . перекроить ( xBatch , ( BATCHSIZE , 1 )) возвращение нп . asarray ( xBatch ), np . asarray ( yBatch ) w = tf . Переменная ( 0.0 , tf . Float32 ) b = tf . Переменная ( 0.0 , tf . Float32 ) x = tf . placeholder ( tf . float32 ) y = tf . placeholder ( tf . float32 ) prediction = tf . add ( tf . multiply ( x , w ), b ) cost = tf . reduce_sum ( tf . square ( прогноз - y )) optimizer = tf . поезд . GradientDescentOptimizer ( learningRate ). минимизировать ( стоимость ) init = tf . global_variables_initializer () с tf . Сессия () как sess : sess . run ( init ) для эпохи в диапазоне ( эпох ): xBatch , yBatch = getBatch ( batchSize , X , Y ) #for (trainX, trainingY) в zip (xBatch, yBatch): sess . run ( optimizer , feed_dict = { x : xBatch , y : yBatch }) if ( epoch + 1 ) % 50 == 0 : c = sess . run ( cost , feed_dict = { x : X , y : Y }) print ( "Epoch:" , ( epoch + 1 ), "cost =" , "{: .4f}" . format ( c ), "w = " , sess . run ( w ), " b = " , sess . run ( b )) print ( " Optimization Finished " ) trainingCost = sess . run ( cost , feed_dict = { x : X , y : Y }) print ( "Стоимость обучения =" , trainingCost , "w =" , sess . run ( w ), "b =" , sess . run ( b )) с двумя столбцами, столбцом ввода и вывода и sess.run (optimizer, feed_dict = {x: xBatch, y: yBatch}), и я использую Excel для поиска линии тренда, я получаю:

y = -0,4571x + 0,9011

w - = learningRate *, когда я запускаю код follodwing w и сходится к разным значениям в зависимости от скорости обучения и размера партии, которую я выбираю. Я без особых усилий играл с разными ценностями. Может, мне что-то не хватает?

Стоимость также не меняется.

learningRate

python,tensorflow,linear-regression,

0

Ответов: 1


0

Когда я запускаю следующий код w и сходится к различным значениям в зависимости от скорости обучения и размера партии, которую я выбираю.

Потому что, если вы запустите wTensorFlow, выполните что-то вроде ниже.

w

где dw- значение, вычисленное оптимизатором спуска градиента.

Поэтому, если вы измените dwи затем запустите программу, вы получите другое значение w. И wвлияет wи wвлияет дальше w. Поэтому сложно предсказать, какое значение wстанет, если вы измените learningRate.

питон, tensorflow, линейно-регрессионный,
Похожие вопросы
Яндекс.Метрика