两个形状中的尺寸1必须相等,但是为128和164.形状为[8,128]和[8,164]

时间:2018-03-20 02:18:23

标签: python machine-learning keras

当我使用keras尝试训练虚拟汽车以避开障碍时,我遇到了这个问题

from flat_game import carmunk
import numpy as np
from nn import neural_net

NUM_SENSORS = 8


def play(model):

   car_distance = 0
   game_state = carmunk.GameState(display_hidden=False)

   # Do nothing to get initial.
   _, state = game_state.frame_step((2))

   # Move.
   while True:
       car_distance += 1

       # Choose action.
       action = (np.argmax(model.predict(state, batch_size=1)))

       # Take action.
       _, state = game_state.frame_step(action)

       # Tell us something.
       if car_distance % 1000 == 0:
           print("Current distance: %d frames." % car_distance)


if __name__ == "__main__":
   saved_model = 'saved-models/164-150-100-50000-625000.h5'
   model = neural_net(NUM_SENSORS, [128, 128], saved_model)
   play(model)

我遇到了问题

model = neural_net(NUM_SENSORS, [128, 128], saved_model)

这是我的neural_net函数:

def neural_net(num_sensors, params, load=''):
       model = Sequential()
       print(params)
       # First layer.
       model.add(Dense(
           params[0], init='lecun_uniform', input_shape=(num_sensors,)
       ))
       model.add(Activation('relu'))
       model.add(Dropout(0.2))

    # Second layer.
    model.add(Dense(params[1], init='lecun_uniform'))
    model.add(Activation('relu'))
    model.add(Dropout(0.2))

    # Output layer.
    # Output layer. 5 actions left, right, accelerate, decelerate, forward
    model.add(Dense(5, init='lecun_uniform'))
    model.add(Activation('linear'))

    rms = RMSprop()
    model.compile(loss='mse', optimizer=rms)

    if load:
        model.load_weights(load)

    return model

当我在第一个代码中运行main时,我收到此错误:

  

文件   " d:\ Anaconda3 \ lib中\站点包\ tensorflow \蟒\框架\ ops.py&#34 ;,   第2404行,在call_with_requiring中           return call_cpp_shape_fn(op,require_shape_fn = True)

     

文件   " d:\ Anaconda3 \ lib中\站点包\ tensorflow \蟒\框架\ common_shapes.py&#34 ;,   第627行,在call_cpp_shape_fn中       require_shape_fn)

     

文件   " d:\ Anaconda3 \ lib中\站点包\ tensorflow \蟒\框架\ common_shapes.py&#34 ;,   第691行,在_call_cpp_shape_fn_impl中       提出ValueError(err.message)

     

ValueError:两个形状中的尺寸1必须相等,但是为128和   164.形状是[8,128]和[8,164]。为'分配' (op:' Assign')输入形状:[8,128],[8,164]。

请帮帮我!非常感谢你!

0 个答案:

没有答案