当我使用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]。
请帮帮我!非常感谢你!