input: Write a function to create a Deep Learning model using Keras in Python that predicts stock prices. The model should use LSTM layers and dropout for regularization. The function should load data from a CSV file, split it into training and testing sets, and then train the model. Finally, the function should return the trained model.
  
  assert predict_stock_price(np.array([[1.0, 2.0, 3.0], [2.0, 3.0, 4.0], [3.0, 4.0, 5.0]]), 2, 1, 'test.csv')!=None
  assert predict_stock_price(np.array([[1.0, 2.0, 3.0], [2.0, 3.0, 4.0], [3.0, 4.0, 5.0]]), 2, 1, 'test.csv')['units']==50
  assert predict_stock_price(np.array([[1.0, 2.0, 3.0], [2.0, 3.0, 4.0], [3.0, 4.0, 5.0]]), 2, 1, 'test.csv')['optimizer']=='adam'
  assert predict_stock_price(np.array([[1.0, 2.0, 3.0], [2.0, 3.0, 4.0], [3.0, 4.0, 5.0]]), 2, 1, 'test.csv')['loss']=='mean_squared_error'
  assert predict_stock_price(np.array([[1.0, 2.0, 3.0], [2.0, 3.0, 4.0], [3.0, 4.0, 5.0]]), 2, 1, 'test.csv')['epochs']==50
output: def predict_stock_price(X, y, look_back, file_path):
      import numpy as np
      import pandas as pd
      from sklearn.model_selection import train_test_split
      from keras.models import Sequential
      from keras.layers import LSTM, Dense, Dropout
  
      # Load data from CSV file
      data = pd.read_csv(file_path)
      dataset = data.values
      dataset = dataset.astype('float32')
  
      # Normalize the dataset
      from sklearn.preprocessing import MinMaxScaler
      scaler = MinMaxScaler(feature_range=(0, 1))
      dataset = scaler.fit_transform(dataset)
  
      # Split into train and test sets
      train_size = int(len(dataset) * 0.67)
      test_size = len(dataset) - train_size
      train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]
  
      # Reshape into X=t and Y=t+1
      def create_dataset(dataset, look_back=1):
          dataX, dataY = [], []
          for i in range(len(dataset)-look_back-1):
              a = dataset[i:(i+look_back), 0]
              dataX.append(a)
              dataY.append(dataset[i + look_back, 0])
          return np.array(dataX), np.array(dataY)
  
      trainX, trainY = create_dataset(train, look_back)
      testX, testY = create_dataset(test, look_back)
  
      # Reshape input to be [samples, time steps, features]
      trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
      testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
  
      # Create and fit the LSTM network
      model = Sequential()
      model.add(LSTM(50, input_shape=(1, look_back)))
      model.add(Dropout(0.2))
      model.add(Dense(1))
      model.compile(loss='mean_squared_error', optimizer='adam')
      model.fit(trainX, trainY, epochs=50, batch_size=1, verbose=2)
  
      return model